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
Modules
WebSocket handshake helpers
Macros
method!() macro for declaration of RPC method handlers
notification!() macro for declaration of RPC notification handlers
Structs
Server-side message serializer and dispatcher when using
Borsh
protocol.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 the RpcHandler::handshake()
call at
the connection negotiation time. This structure comes in as Arc<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
and Messenger::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) and Interface
(for method and notification dispatch).Server-side message serializer and dispatcher when using
SerdeJson
protocol.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
Base trait for
BorshProtocol
and SerdeJsonProtocol
protocol handlersRpcHandler
- 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 the handshake()
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 the WebSocketHandler::message
. This is an
MPSC
channel that can be cloned and retained externally for the
lifetime of the WebSocket connection.