@@ -32,22 +32,32 @@ rsocket_rust = "0.7.1"
32
32
### Server
33
33
34
34
``` rust
35
+ extern crate log;
36
+
37
+ use futures :: executor :: block_on;
35
38
use rsocket_rust :: prelude :: * ;
36
39
use rsocket_rust :: utils :: EchoRSocket ;
37
40
use rsocket_rust :: Result ;
38
- use rsocket_rust_transport_tcp :: TcpServerTransport ;
41
+ use rsocket_rust_transport_tcp :: * ;
39
42
40
43
#[tokio:: main]
41
44
async fn main () -> Result <()> {
45
+ env_logger :: builder (). format_timestamp_millis (). init ();
46
+
42
47
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
+ })))
49
60
}))
50
- . on_start (Box :: new (|| println! (" +++++++ echo server started! +++++++" )))
51
61
. serve ()
52
62
. await
53
63
}
@@ -56,28 +66,32 @@ async fn main() -> Result<()> {
56
66
### Client
57
67
58
68
``` rust
69
+ extern crate log;
70
+
59
71
use rsocket_rust :: prelude :: * ;
72
+ use rsocket_rust :: utils :: EchoRSocket ;
60
73
use rsocket_rust :: Result ;
61
74
use rsocket_rust_transport_tcp :: TcpClientTransport ;
62
75
63
76
#[tokio:: main]
64
77
async fn main () -> Result <()> {
65
- let cli = RSocketFactory :: connect ()
78
+ env_logger :: builder (). format_timestamp_millis (). init ();
79
+ let client = RSocketFactory :: connect ()
66
80
. 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
+ }))
70
85
. 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
+ }
81
95
82
96
Ok (())
83
97
}
0 commit comments