@@ -266,12 +266,7 @@ impl RoutingHandler {
266266 NackType :: UnexpectedRecipient ( _) => todo ! ( ) ,
267267 }
268268
269- if let Some ( packet) =
270- self . buffer
271- . get_fragment_by_id ( session_id, nack. fragment_index , source_id)
272- {
273- self . try_send ( packet) ?;
274- }
269+ self . retry_send ( session_id, nack. fragment_index , source_id) ?;
275270
276271 Ok ( ( ) )
277272 }
@@ -341,7 +336,6 @@ impl RoutingHandler {
341336 destination : NodeId ,
342337 session_id : Option < u64 > ,
343338 ) -> Result < ( ) , NetworkError > {
344- // devo inviare con lo stesso session_id del packetto o con il mio??????????
345339 let chunks: Vec < & [ u8 ] > = message. chunks ( 128 ) . collect ( ) ;
346340 let total_n_fragments = chunks. len ( ) ;
347341
@@ -375,7 +369,11 @@ impl RoutingHandler {
375369
376370 self . try_send ( packet. clone ( ) ) ?;
377371 let session_id = packet. session_id ;
378- self . buffer . insert ( packet, session_id, self . id ) ;
372+ self . buffer . insert (
373+ packet,
374+ session_id,
375+ self . id
376+ ) ;
379377 }
380378
381379 Ok ( ( ) )
@@ -452,25 +450,29 @@ mod tests {
452450 assert ! ( !handler. network_view. nodes[ 0 ] . get_adjacents( ) . contains( & 2 ) ) ;
453451 }
454452
455- // #[test]
456- // fn test_start_flood() {
457- // let (sender, receiver) = unbounded();
458- // let mut handler = RoutingHandler::new(1, NodeType::Client, HashMap::new(), sender);
459- //
460- // let (neighbor_sender, neighbor_receiver) = unbounded();
461- // handler.add_neighbor(2, neighbor_sender);
462- //
463- // handler.start_flood().unwrap();
464- //
465- // let packet = receiver.try_recv().unwrap();
466- // assert!(matches!(packet.try_into().unwrap(), NodeEvent::FloodStarted(_, _)));
467- //
468- // let neighbor_packet = neighbor_receiver.try_recv().unwrap();
469- // assert!(matches!(
470- // neighbor_packet.pack_type,
471- // PacketType::FloodRequest(_)
472- // ));
473- // }
453+ #[ test]
454+ fn test_start_flood ( ) {
455+ let ( sender, receiver) = unbounded ( ) ;
456+ let mut handler = RoutingHandler :: new ( 1 , NodeType :: Client , HashMap :: new ( ) , sender) ;
457+
458+ let ( neighbor_sender, neighbor_receiver) = unbounded ( ) ;
459+ handler. add_neighbor ( 2 , neighbor_sender) ;
460+
461+ handler. start_flood ( ) . unwrap ( ) ;
462+
463+ let packet = receiver. try_recv ( ) . unwrap ( ) ;
464+ if let Ok ( cmd) = packet. downcast :: < NodeEvent > ( ) {
465+
466+ assert ! ( matches!( * cmd, NodeEvent :: FloodStarted ( _, _) ) ) ;
467+
468+ }
469+
470+ let neighbor_packet = neighbor_receiver. try_recv ( ) . unwrap ( ) ;
471+ assert ! ( matches!(
472+ neighbor_packet. pack_type,
473+ PacketType :: FloodRequest ( _)
474+ ) ) ;
475+ }
474476
475477 #[ test]
476478 fn test_handle_flood_response ( ) {
@@ -505,22 +507,22 @@ mod tests {
505507 assert ! ( matches!( packet. pack_type, PacketType :: MsgFragment ( _) ) ) ;
506508 }
507509
508- // #[test]
509- // fn test_handle_ack() {
510- // let (sender, _receiver) = unbounded();
511- // let mut handler = RoutingHandler::new(1, NodeType::Client, HashMap::new(), sender);
512- //
513- // let (neighbor_sender, _neighbor_receiver) = unbounded();
514- // handler.add_neighbor(2, neighbor_sender);
515- //
516- // let message = b"Hello, world!".to_vec();
517- // handler.send_message(&message, 2).unwrap();
518- //
519- // let ack = Ack {
520- // fragment_index: 0,
521- // };
522- //
523- // handler.handle_ack(&ack, 1, 2);
524- //
525- // }
510+ #[ test]
511+ fn test_handle_ack ( ) {
512+ let ( sender, _receiver) = unbounded ( ) ;
513+ let mut handler = RoutingHandler :: new ( 1 , NodeType :: Client , HashMap :: new ( ) , sender) ;
514+
515+ let ( neighbor_sender, _neighbor_receiver) = unbounded ( ) ;
516+ handler. add_neighbor ( 2 , neighbor_sender) ;
517+
518+ let message = b"Hello, world!" . to_vec ( ) ;
519+ handler. send_message ( & message, 2 , None ) . unwrap ( ) ;
520+
521+ let ack = Ack {
522+ fragment_index : 0 ,
523+ } ;
524+
525+ handler. handle_ack ( & ack, 1 , 2 ) ;
526+
527+ }
526528}
0 commit comments