A Typeclass for abstracting over callbacks and futures
A Typeclass for building Async instances, used internally by ClientFactory.
So we need to take a type-parameterized request object, package it into a monomorphic case class to send to the worker, and have the handler that receives that object able to pattern match out the parameterized object, all without using reflection.
A Callback is a Monad for doing in-thread non-blocking operations.
This exception is only thrown when there's a uncaught exception in the execution block of a Callback.
A CallbackExecutor
is an actor that mixes in the [CallbackExecution] trait
to complete the execution of a [Callback] that has been converted from a
Future
.
A CallbackPromise creates a callback which can be eventually filled in with a value.
Configuration used to specify a Client's parameters
Mixed into protocols to provide simple methods for creating clients.
This has to be implemented per codec in order to lift generic Sender traits to a type-specific trait
Thrown when the pending buffer is full
This correctly routes messages to the right worker and handler
A Codec is a stateful object for converting requests/responses to/from DataBuffers.
Provide a Codec as well as some convenience functions for usage within in a Service.
Thrown when a request is lost in transit
Thrown when there's some kind of data error
This little actor is needed because apparently actors that are running in a pinned dispatcher AND are sending messages to themselves (like workers) cannot use the scheduler.
The LoadBalancingClient will evenly distribute requests across a set of clients.
Throw when a request is attempted while not connected
The PermutationGenerator creates permutations such that consecutive calls are guaranteed to cycle though all items as the first element.
Returned when a request has been pending for too long
A Sender is anything that is able to asynchronously send a request and receive a corresponding response
A ServiceClient is a non-blocking, synchronous interface that handles sending atomic commands on a connection and parsing their replies
A ClientPool is a simple container of open connections.
Configuration class for a Service Server Connection Handler
The ServiceServer provides an interface and basic functionality to create a server that processes requests and returns responses over a codec.
This is thrown when a Client is manually disconnected, and subsequent attempt is made to reconnect.
UnmappedCallback is essentially an optimization that avoids needing to create a MappedCallback with an identity function