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
.
Configuration used to specify a Client's parameters
The ClientLike trait is intended to be an interface for anything that you can connect to and send messages.
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 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
The Service object is an entry point into the the Service DSL which provide some convenience functions for quickly creating a Server serving responses to requests utilizing a Codec(ie: memcached, http, redis, etc).