thrift-clj.core
Thrift/Clojure Integration
blocking-server-transport
(blocking-server-transport port {:keys [bind client-timeout]})
Create blocking server transport on the given port.
connect!
(connect! client-class transport & {:keys [protocol]})
Create new Client of the given Class that connects to the given
service.
defservice
macro
(defservice id service-cls & implementation)
Define var containing the service.
disconnect!
(disconnect! client)
fast-framed
(fast-framed t & {:keys [max-frame-length initial-buffer-size]})
Wrap transport with fast framed transport (compatible with `framed`, but using
persistent byte buffers).
framed
(framed t & {:keys [max-frame-length]})
Wrap transport with framed transport (prefixes messages with 4 byte frame size).
http
(http url & {:keys [connect-timeout read-timeout custom-headers]})
import
macro
(import & specs)
import-all
macro
(import-all & packages)
Load all Thrift Entities in the given packages.
import-all-clients
macro
(import-all-clients & packages)
Import all services that reside in a package with one of the given prefixes.
import-all-services
macro
(import-all-services & packages)
Import all services that reside in a package with one of the given prefixes.
import-all-types
macro
(import-all-types & packages)
Import all types that reside in a package with one of the given prefixes.
import-clients
macro
(import-clients & services)
Import the given Thrift Clients making them accessible via `defservice`.
There are three types of specification formats:
- `package.Class`: load exactly this client, using the name `Class`
- `[package Class1 Class2 ...]`: load the given client from the package, using class names
as type names
- `[package.Class :as N]`: load the given client, using the name `N`
import-iface
macro
(import-iface & services)
Import the given Thrift Iface without creating Services/Clients to handle it.
import-services
macro
(import-services & services)
Import the given Thrift Services making them accessible via `defservice`.
There are three types of specification formats:
- `package.Class`: load exactly this service, using the name `Class`
- `[package Class1 Class2 ...]`: load the given services from the package, using class names
as type names
- `[package.Class :as N]`: load the given service, using the name `N`
import-types
macro
(import-types & types)
Import the given Thrift Types making them accessible as Clojure Types of the same name.
multi-threaded-server
(multi-threaded-server iface port & opts)
Create multi-threaded Server using the given Iface Implementation.
nonblocking-server
(nonblocking-server iface port & opts)
Create non-blocking Server using the given Iface Implementation.
nonblocking-server-transport
(nonblocking-server-transport port {:keys [bind client-timeout]})
Create non-blocking server transport on the given port.
serve!
(serve! server)
Start Server in a new Thread. Returns the Server.
serve-and-block!
(serve-and-block! server)
Start Server, blocking the current Thread indefinitely.
service
macro
(service service-cls & implementation)
Implement the given, previously imported Service.
single-threaded-server
(single-threaded-server iface port & opts)
Create single-threaded Server using the given Iface Implementation.
stop!
(stop! server)
Stop the given Server. Returns the Server.
streams
(streams in out)
Create IOStream transport.
tcp
(tcp port)(tcp host port)
tcp-async
(tcp-async port)(tcp-async host port)
Create non-blocking TCP transport.
throw
macro
(throw ex & args)
Throw Exception. May take the Clojure representation of a Thrift Exception.
try
macro
(try & forms)
Try executing the given Forms catching Exceptions that can be identified by their
Clojure equivalent.