pub struct RpcServer<C: Codec = BincodeCodec> { /* private fields */ }Implementations§
Source§impl RpcServer<BincodeCodec>
impl RpcServer<BincodeCodec>
Sourcepub fn new() -> Self
pub fn new() -> Self
Examples found in repository?
examples/rpc_client_server.rs (line 56)
49async fn run_server() -> Result<(), Box<dyn std::error::Error>> {
50 println!("[Server] Starting RPC server");
51
52 let config = SharedMemoryConfig::default();
53 let transport = SharedMemoryTransport::create_server(SERVICE_NAME, config)?;
54 let msg_transport = Arc::new(MessageTransportAdapter::new(transport));
55
56 let server = RpcServer::new();
57
58 server.register_typed("add", |req: AddRequest| async move {
59 println!("[Server] add({}, {})", req.a, req.b);
60 Ok(AddResponse {
61 result: req.a + req.b,
62 })
63 });
64
65 server.register_typed("echo", |req: EchoRequest| async move {
66 println!("[Server] echo(\"{}\")", req.message);
67 let len = req.message.len();
68 Ok(EchoResponse {
69 message: req.message,
70 length: len,
71 })
72 });
73
74 println!("[Server] Registered {} handlers", server.handler_count());
75 println!("[Server] Waiting for requests\n");
76
77 server.serve(msg_transport).await?;
78
79 Ok(())
80}Source§impl<C: Codec + Clone + Default + 'static> RpcServer<C>
impl<C: Codec + Clone + Default + 'static> RpcServer<C>
pub fn with_codec(codec: C) -> Self
pub fn register(&self, handler: Arc<dyn Handler<C>>)
pub fn register_fn<F, Fut>(&self, method: impl Into<String>, func: F)
Sourcepub fn register_typed<Req, Resp, F, Fut>(
&self,
method: impl Into<String>,
func: F,
)
pub fn register_typed<Req, Resp, F, Fut>( &self, method: impl Into<String>, func: F, )
Examples found in repository?
examples/rpc_client_server.rs (lines 58-63)
49async fn run_server() -> Result<(), Box<dyn std::error::Error>> {
50 println!("[Server] Starting RPC server");
51
52 let config = SharedMemoryConfig::default();
53 let transport = SharedMemoryTransport::create_server(SERVICE_NAME, config)?;
54 let msg_transport = Arc::new(MessageTransportAdapter::new(transport));
55
56 let server = RpcServer::new();
57
58 server.register_typed("add", |req: AddRequest| async move {
59 println!("[Server] add({}, {})", req.a, req.b);
60 Ok(AddResponse {
61 result: req.a + req.b,
62 })
63 });
64
65 server.register_typed("echo", |req: EchoRequest| async move {
66 println!("[Server] echo(\"{}\")", req.message);
67 let len = req.message.len();
68 Ok(EchoResponse {
69 message: req.message,
70 length: len,
71 })
72 });
73
74 println!("[Server] Registered {} handlers", server.handler_count());
75 println!("[Server] Waiting for requests\n");
76
77 server.serve(msg_transport).await?;
78
79 Ok(())
80}pub fn register_stream<Req, Item, F, S>( &self, method: impl Into<String>, func: F, )
pub fn register_stream_fn<F, Fut>(&self, method: impl Into<String>, func: F)
pub async fn handle_message<T: MessageTransport<C>>( &self, message: Message<C>, transport: &T, ) -> Option<Message<C>>
Sourcepub async fn serve<T: MessageTransport<C>>(
&self,
transport: Arc<T>,
) -> Result<()>
pub async fn serve<T: MessageTransport<C>>( &self, transport: Arc<T>, ) -> Result<()>
Examples found in repository?
examples/rpc_client_server.rs (line 77)
49async fn run_server() -> Result<(), Box<dyn std::error::Error>> {
50 println!("[Server] Starting RPC server");
51
52 let config = SharedMemoryConfig::default();
53 let transport = SharedMemoryTransport::create_server(SERVICE_NAME, config)?;
54 let msg_transport = Arc::new(MessageTransportAdapter::new(transport));
55
56 let server = RpcServer::new();
57
58 server.register_typed("add", |req: AddRequest| async move {
59 println!("[Server] add({}, {})", req.a, req.b);
60 Ok(AddResponse {
61 result: req.a + req.b,
62 })
63 });
64
65 server.register_typed("echo", |req: EchoRequest| async move {
66 println!("[Server] echo(\"{}\")", req.message);
67 let len = req.message.len();
68 Ok(EchoResponse {
69 message: req.message,
70 length: len,
71 })
72 });
73
74 println!("[Server] Registered {} handlers", server.handler_count());
75 println!("[Server] Waiting for requests\n");
76
77 server.serve(msg_transport).await?;
78
79 Ok(())
80}pub fn spawn_handler<T: MessageTransport<C> + 'static>( &self, transport: T, ) -> ServerHandle
Sourcepub fn handler_count(&self) -> usize
pub fn handler_count(&self) -> usize
Examples found in repository?
examples/rpc_client_server.rs (line 74)
49async fn run_server() -> Result<(), Box<dyn std::error::Error>> {
50 println!("[Server] Starting RPC server");
51
52 let config = SharedMemoryConfig::default();
53 let transport = SharedMemoryTransport::create_server(SERVICE_NAME, config)?;
54 let msg_transport = Arc::new(MessageTransportAdapter::new(transport));
55
56 let server = RpcServer::new();
57
58 server.register_typed("add", |req: AddRequest| async move {
59 println!("[Server] add({}, {})", req.a, req.b);
60 Ok(AddResponse {
61 result: req.a + req.b,
62 })
63 });
64
65 server.register_typed("echo", |req: EchoRequest| async move {
66 println!("[Server] echo(\"{}\")", req.message);
67 let len = req.message.len();
68 Ok(EchoResponse {
69 message: req.message,
70 length: len,
71 })
72 });
73
74 println!("[Server] Registered {} handlers", server.handler_count());
75 println!("[Server] Waiting for requests\n");
76
77 server.serve(msg_transport).await?;
78
79 Ok(())
80}Trait Implementations§
Auto Trait Implementations§
impl<C> Freeze for RpcServer<C>where
C: Freeze,
impl<C = BincodeCodec> !RefUnwindSafe for RpcServer<C>
impl<C> Send for RpcServer<C>
impl<C> Sync for RpcServer<C>
impl<C> Unpin for RpcServer<C>where
C: Unpin,
impl<C = BincodeCodec> !UnwindSafe for RpcServer<C>
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more