All Classes

Class Description
AsyncRPCSender
Implementation of RPCSender utilizing ExecutorService for asynchronous work
BackgroundRPCListener
Implementation of RPCListener utilizing ExecutorService for background work
IdentifiableMessage
Defines a Message which has an ID ID has to be stored, since these messages usually receive a response (unless they are response themselves)
Message
Defines a single message in RPC communication
MessageIdGenerator
Represents a generator for ids for messages.
MessageType
Defines types used in RPC communication Contains int value used in RPC communication which represents the type
NotificationMessage
Defines a notification Notifications should not be considered high priority and are not expected to block execution They should be handled when possible Format is defined as: * type as Integer * name (event name) as String * arguments as Array
NotificationMessage.Builder
Builder for NotificationMessage just for convention Since all other Message implementations contain builder This should not be used outside of library, since notifications are usually only incoming messages
PackStream
Two-way msgpack stream that wraps reading/writing bytes and exposes an interface for sending Message
ProcessRPCConnection
Implementation of RPCConnection providing streams of a Process
RequestMessage
Defines a request (either made by client or server) Requests are expected to be blocking! Response is expected and they should be handled immediately.
RequestMessage.Builder
Builder for RequestMessage Outside users should not use RequestMessage.Builder.withId(int) method.
ResponseMessage
Defines a response Format is defined as: * type as Integer * id as Integer * error as RPCError * result
ResponseMessage.Builder
Builder for ResponseMessage for convention Outside users should not use ResponseMessage.Builder.withId(int) method.
RPCClient
Wrapper around RPCStreamer This class should be used for communication.
RPCClient.Builder
Builder for RPCClient to simplify configuration Everything is set to default at the start and following may be changed: * Underlying RPCStreamer * If default RPCStreamer is used, RPCSender and RPCListener may be changed * If default RPCSender or RPCListener are used, ObjectMapper and ExecutorService can be changed
RPCClient.Builder.CustomRPCListenerBuilder
Builder used when RPCListener is changed
RPCClient.Builder.CustomRPCSenderBuilder
Builder used when RPCSender is changed
RPCClient.Builder.CustomRPCStreamerBuilder
Builder used when RPCStreamer is changed
RPCClient.Builder.DefaultRPCStreamerFullBuilder
Builder used when both RPCSender and RPCListener are changed
RPCConnection
Represents a bi-directional RPC connection (it may represent any connection, due to it being very generic)
RPCError
Class defining an error used in RPC communication It is not an error in the communication itself, rather an error that is sent by applications communicating to indicate an error (bad request, bad payload, etc.)
RPCListener
Represents a RPC communication listener It should attach to communication streams and notify when certain notifications and responses occur It should all be run on a separate thread to prevent blocking
RPCListener.NotificationCallback
Callback for NotificationMessage It may be called at any time and is not usually paired with a request It should be handled, but not with high priority, since it is not expected to be blocking
RPCListener.RequestCallback
Callback for RequestMessage It may be called at any time and is not usually paired with a request It should be handled immediately, if possible, since it is expected to be blocking and response is expected
RPCListener.ResponseCallback
Callback for ResponseMessage object It should usually be paired with a request and this should be used to take the response
RPCSender
Represents a RPC communication sender (writer) It should provide interface for sending messages Message sending should occur on a separate thread
RPCStreamer
Interface defining a two way RPC communication stream Implementations of this should be used for communication since it covers both input and output
SequentialMessageIdGenerator
Simple implementation of MessageIdGenerator creating IDs using an AtomicInteger
TcpSocketRPCConnection
Simple implementation of RPCConnection based on a TCP Socket