Module workflow_rpc::server
source · Expand description
RPC server module (native only). This module encapsulates
server-side types used to create an RPC server: RpcServer
,
RpcHandler
, Messenger
, Interface
and the
protocol handlers: BorshProtocol
and SerdeJsonProtocol
.
Re-exports
pub use crate::encoding::Encoding;
pub use protocol::BorshProtocol;
pub use protocol::ProtocolHandler;
pub use protocol::SerdeJsonProtocol;
pub use super::error::*;
Modules
- WebSocket handshake helpers
- Convenience module exporting all types required for using the
RpcServer
- Protocol module containing protocol handlers in charge of incoming and outgoing message serialization and RPC method and notification dispatch.
Macros
- method!() macro for declaration of RPC method handlers
- notification!() macro for declaration of RPC notification handlers
Structs
Interface
struct carries a mapping of RPC methods and notifications, used by protocols to dispatch calls to their respective handlers.- The
Messenger
struct is supplied to theRpcHandler::handshake()
call at the connection negotiation time. This structure comes in asArc<Messenger>
and can be retained for later processing. It provides two methods:Messenger::notify
that can be used asynchronously to dispatch RPC notifications to the client andMessenger::close
that can be used to terminate the RPC connection with the client. - RPC method wrapper. Contains the method closure function.
- RPC notification wrapper. Contains the notification closure function.
- A basic example RpcContext, can be used to keep track of connected peers.
RpcServer
- a server-side object that listens for incoming websocket connections and delegates interaction with them to the supplied interfaces:RpcHandler
(for RPC server management) andInterface
(for method and notification dispatch).- Send values to the associated
UnboundedReceiver
. - WebSocketServer that provides the main websocket connection and message processing loop that delivers messages to the installed WebSocketHandler trait.
Enums
- An enum representing the various forms of a WebSocket message.
- An internet socket address, either IPv4 or IPv6.
- Errors produced by the
WebSocketServer
.
Traits
RpcHandler
- a server-side event handler for RPC connections.- WebSocketHandler trait that represents the WebSocket processor functionality. This trait is supplied to the WebSocket which subsequently invokes it’s functions during websocket connection and messages. The trait can override
with_handshake()
method to enable invocation of thehandshake()
method upon receipt of the first valid websocket message from the incoming connection. - Base WebSocketServer trait allows the
WebSocketServer<T>
struct to be retained by the trait reference by castring it to the trait as follows:
Type Definitions
- WebSocket stream receiver for receiving
tungstenite::Message
. This stream object must have a mutable reference and can not be cloned. - WebSocket stream sender for dispatching
tungstenite::Message
. This stream object must have a mutable reference and can not be cloned. - WebSocketSink
tokio::sync::mpsc::UnboundedSender
for dispatching messages from within theWebSocketHandler::message
. This is anMPSC
channel that can be cloned and retained externally for the lifetime of the WebSocket connection.