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
Interfacestruct carries a mapping of RPC methods and notifications, used by protocols to dispatch calls to their respective handlers.- The
Messengerstruct 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::notifythat can be used asynchronously to dispatch RPC notifications to the client andMessenger::closethat 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::UnboundedSenderfor dispatching messages from within theWebSocketHandler::message. This is anMPSCchannel that can be cloned and retained externally for the lifetime of the WebSocket connection.