1
1
use std:: {
2
- io:: Read ,
3
- net:: { Ipv4Addr , SocketAddrV4 , TcpListener } ,
2
+ io:: { self , Read , Write as _ } ,
3
+ net:: { Ipv4Addr , SocketAddrV4 , TcpListener , TcpStream } ,
4
4
} ;
5
5
6
6
use clap:: Parser as _;
7
- use peer_node:: cli:: Args ;
7
+ use peer_node:: {
8
+ cli:: { Args , Role } ,
9
+ comms:: message:: Message ,
10
+ } ;
8
11
9
12
#[ tokio:: main]
10
13
async fn main ( ) -> Result < ( ) , std:: io:: Error > {
@@ -17,12 +20,35 @@ async fn main() -> Result<(), std::io::Error> {
17
20
tracing:: info!( "Node address: {}" , address) ;
18
21
tracing:: info!( "A {}" , args. role) ;
19
22
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 ( ) ?;
24
50
25
- tracing :: info! ( "Message received: {:?}" , msg ) ;
51
+ Ok ( ( ) )
26
52
}
27
53
}
28
54
}
0 commit comments