@@ -32,22 +32,32 @@ rsocket_rust = "0.7.1"
3232### Server
3333
3434``` rust
35+ extern crate log;
36+
37+ use futures :: executor :: block_on;
3538use rsocket_rust :: prelude :: * ;
3639use rsocket_rust :: utils :: EchoRSocket ;
3740use rsocket_rust :: Result ;
38- use rsocket_rust_transport_tcp :: TcpServerTransport ;
41+ use rsocket_rust_transport_tcp :: * ;
3942
4043#[tokio:: main]
4144async fn main () -> Result <()> {
45+ env_logger :: builder (). format_timestamp_millis (). init ();
46+
4247 RSocketFactory :: receive ()
43- . transport (TcpServerTransport :: from (" 127.0.0.1:7878" ))
44- . acceptor (Box :: new (| setup , _socket | {
45- println! (" accept setup: {:?}" , setup );
46- Ok (Box :: new (EchoRSocket ))
47- // Or you can reject setup
48- // Err(From::from("SETUP_NOT_ALLOW"))
48+ . transport (TcpServerTransport :: from (" 127.0.0.1:7979" ))
49+ . acceptor (Box :: new (| setup , _sending_socket | {
50+ info! (" incoming socket: setup={:?}" , setup );
51+ Ok (Box :: new (block_on (async move {
52+ RSocketFactory :: connect ()
53+ . transport (TcpClientTransport :: from (" 127.0.0.1:7878" ))
54+ . acceptor (Box :: new (|| Box :: new (EchoRSocket )))
55+ . setup (Payload :: from (" I'm Rust!" ))
56+ . start ()
57+ . await
58+ . unwrap ()
59+ })))
4960 }))
50- . on_start (Box :: new (|| println! (" +++++++ echo server started! +++++++" )))
5161 . serve ()
5262 . await
5363}
@@ -56,28 +66,32 @@ async fn main() -> Result<()> {
5666### Client
5767
5868``` rust
69+ extern crate log;
70+
5971use rsocket_rust :: prelude :: * ;
72+ use rsocket_rust :: utils :: EchoRSocket ;
6073use rsocket_rust :: Result ;
6174use rsocket_rust_transport_tcp :: TcpClientTransport ;
6275
6376#[tokio:: main]
6477async fn main () -> Result <()> {
65- let cli = RSocketFactory :: connect ()
78+ env_logger :: builder (). format_timestamp_millis (). init ();
79+ let client = RSocketFactory :: connect ()
6680 . transport (TcpClientTransport :: from (" 127.0.0.1:7878" ))
67- . setup (Payload :: from (" READY!" ))
68- . mime_type (" text/plain" , " text/plain" )
69- . on_close (Box :: new (|| println! (" connection closed" )))
81+ . acceptor (Box :: new (|| {
82+ // Return a responder.
83+ Box :: new (EchoRSocket )
84+ }))
7085 . start ()
71- . await ? ;
72- let req = Payload :: builder ()
73- . set_data_utf8 (" Hello World!" )
74- . set_metadata_utf8 (" Rust" )
75- . build ();
76- let res = cli . request_response (req ). await ? ;
77- println! (" got: {:?}" , res );
78-
79- // If you want to block until socket disconnected.
80- cli . wait_for_close (). await ;
86+ . await
87+ . expect (" Connect failed!" );
88+
89+ let req = Payload :: builder (). set_data_utf8 (" Ping!" ). build ();
90+
91+ match client . request_response (req ). await {
92+ Ok (res ) => info! (" {:?}" , res ),
93+ Err (e ) => error! (" {}" , e ),
94+ }
8195
8296 Ok (())
8397}
0 commit comments