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 |