11use std:: {
2- io:: Read ,
3- net:: { Ipv4Addr , SocketAddrV4 , TcpListener } ,
2+ io:: { self , Read , Write as _ } ,
3+ net:: { Ipv4Addr , SocketAddrV4 , TcpListener , TcpStream } ,
44} ;
55
66use clap:: Parser as _;
7- use peer_node:: cli:: Args ;
7+ use peer_node:: {
8+ cli:: { Args , Role } ,
9+ comms:: message:: Message ,
10+ } ;
811
912#[ tokio:: main]
1013async fn main ( ) -> Result < ( ) , std:: io:: Error > {
@@ -17,12 +20,35 @@ async fn main() -> Result<(), std::io::Error> {
1720 tracing:: info!( "Node address: {}" , address) ;
1821 tracing:: info!( "A {}" , args. role) ;
1922
20- loop {
21- for mut incoming_stream in listerner. incoming ( ) . flatten ( ) {
22- let mut msg = [ 0 ; 16 ] ;
23- let _byte_count = incoming_stream. read ( & mut msg) ?;
23+ match args. role {
24+ Role :: Receiver => loop {
25+ for mut incoming_stream in listerner. incoming ( ) . flatten ( ) {
26+ let mut msg = [ 0 ; 5 ] ;
27+ let _byte_count = incoming_stream. read ( & mut msg) ?;
28+
29+ let msg: Message = String :: from_utf8_lossy ( & msg) . trim ( ) . to_string ( ) . into ( ) ;
30+
31+ // If it's a rememberMe, store to some DHT and if Comms: Act as instructed
32+
33+ tracing:: info!( "Message received: {msg:?}" ) ;
34+ }
35+ } ,
36+ Role :: Sender => {
37+ let mut msg = String :: new ( ) ;
38+ io:: stdin ( ) . read_line ( & mut msg) ?;
39+
40+ tracing:: info!( "Sending: {msg}" ) ;
41+
42+ let mut outgoing_stream = TcpStream :: connect ( args. address ) ?;
43+
44+ let msg: Message = msg. into ( ) ;
45+
46+ outgoing_stream. write_all ( msg. to_string ( ) . as_bytes ( ) ) ?;
47+
48+ // Wait for the message to be sent before exiting
49+ outgoing_stream. flush ( ) ?;
2450
25- tracing :: info! ( "Message received: {:?}" , msg ) ;
51+ Ok ( ( ) )
2652 }
2753 }
2854}
0 commit comments