1515//! ```
1616use clap:: Parser ;
1717use futures:: stream:: StreamExt ;
18+ use orfail:: OrFail ;
1819
1920#[ derive( Debug , Parser ) ]
2021#[ clap( name = "recv_msg" ) ]
@@ -33,18 +34,18 @@ struct Args {
3334impl Args {
3435 async fn local_epmd_client (
3536 & self ,
36- ) -> anyhow :: Result < erl_dist:: epmd:: EpmdClient < smol:: net:: TcpStream > > {
37+ ) -> orfail :: Result < erl_dist:: epmd:: EpmdClient < smol:: net:: TcpStream > > {
3738 let addr = ( self . local_node . host ( ) , erl_dist:: epmd:: DEFAULT_EPMD_PORT ) ;
38- let stream = smol:: net:: TcpStream :: connect ( addr) . await ?;
39+ let stream = smol:: net:: TcpStream :: connect ( addr) . await . or_fail ( ) ?;
3940 Ok ( erl_dist:: epmd:: EpmdClient :: new ( stream) )
4041 }
4142}
4243
43- fn main ( ) -> anyhow :: Result < ( ) > {
44+ fn main ( ) -> orfail :: Result < ( ) > {
4445 let args = Args :: parse ( ) ;
4546 smol:: block_on ( async {
46- let listener = smol:: net:: TcpListener :: bind ( "0.0.0.0:0" ) . await ?;
47- let listening_port = listener. local_addr ( ) ?. port ( ) ;
47+ let listener = smol:: net:: TcpListener :: bind ( "0.0.0.0:0" ) . await . or_fail ( ) ?;
48+ let listening_port = listener. local_addr ( ) . or_fail ( ) ?. port ( ) ;
4849 println ! ( "Listening port: {}" , listening_port) ;
4950
5051 let local_node_entry = if args. published {
@@ -57,12 +58,12 @@ fn main() -> anyhow::Result<()> {
5758 . local_epmd_client ( )
5859 . await ?
5960 . register ( local_node_entry)
60- . await ?;
61+ . await
62+ . or_fail ( ) ?;
6163 println ! ( "Registered self node: creation={:?}" , creation) ;
6264
6365 let mut incoming = listener. incoming ( ) ;
64- while let Some ( stream) = incoming. next ( ) . await {
65- let stream = stream?;
66+ while let Some ( stream) = incoming. next ( ) . await . transpose ( ) . or_fail ( ) ? {
6667 let mut local_node = erl_dist:: node:: LocalNode :: new ( args. local_node . clone ( ) , creation) ;
6768 if args. published {
6869 local_node. flags |= erl_dist:: DistributionFlags :: PUBLISHED ;
@@ -90,10 +91,10 @@ async fn handle_client(
9091 local_node : erl_dist:: node:: LocalNode ,
9192 cookie : String ,
9293 stream : smol:: net:: TcpStream ,
93- ) -> anyhow :: Result < ( ) > {
94+ ) -> orfail :: Result < ( ) > {
9495 let mut handshake =
9596 erl_dist:: handshake:: ServerSideHandshake :: new ( stream, local_node. clone ( ) , & cookie) ;
96- let status = if handshake. execute_recv_name ( ) . await ?. is_some ( ) {
97+ let status = if handshake. execute_recv_name ( ) . await . or_fail ( ) ?. is_some ( ) {
9798 erl_dist:: handshake:: HandshakeStatus :: Ok
9899 } else {
99100 // Dynamic name.
@@ -102,7 +103,7 @@ async fn handle_client(
102103 creation : erl_dist:: node:: Creation :: random ( ) ,
103104 }
104105 } ;
105- let ( stream, peer_node) = handshake. execute_rest ( status) . await ?;
106+ let ( stream, peer_node) = handshake. execute_rest ( status) . await . or_fail ( ) ?;
106107 println ! ( "Connected: {:?}" , peer_node) ;
107108
108109 let ( mut tx, rx) = erl_dist:: message:: channel ( stream, local_node. flags & peer_node. flags ) ;
@@ -116,7 +117,7 @@ async fn handle_client(
116117 . await ;
117118 match result {
118119 futures:: future:: Either :: Left ( ( result, _) ) => {
119- let ( msg, rx) = result?;
120+ let ( msg, rx) = result. or_fail ( ) ?;
120121 println ! ( "Recv: {:?}" , msg) ;
121122 msg_future = Box :: pin ( rx. recv_owned ( ) ) ;
122123 }
@@ -126,7 +127,7 @@ async fn handle_client(
126127 }
127128
128129 if smol:: future:: poll_once ( & mut timer) . await . is_some ( ) {
129- tx. send ( erl_dist:: message:: Message :: Tick ) . await ?;
130+ tx. send ( erl_dist:: message:: Message :: Tick ) . await . or_fail ( ) ?;
130131 timer. set_after ( std:: time:: Duration :: from_secs ( 30 ) ) ;
131132 }
132133 }
0 commit comments