@@ -7,11 +7,9 @@ use std::task::{Context, Poll};
77use std:: thread:: current;
88use std:: time:: { Duration , SystemTime } ;
99
10- use failure:: Fail ;
1110use futures:: future:: Pending ;
1211use futures:: stream:: { Stream , StreamExt } ;
1312use log:: * ;
14- use tokio:: time:: Delay ;
1513
1614use futures:: stream:: FuturesUnordered ;
1715use pin_project:: pin_project;
@@ -26,14 +24,14 @@ use crate::stream::StreamItem;
2624#[ pin_project]
2725struct CallbackFuture < E , T >
2826where
29- E : Fail + Sync + Send ,
27+ E : Sync + Send ,
3028 T : Stream < Item = StreamItem < E > > + Sized + Unpin ,
3129{
3230 idx : usize ,
3331 stream : Option < T > ,
3432}
3533
36- impl < E : Fail + Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin > Future
34+ impl < E : Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin > Future
3735 for CallbackFuture < E , T >
3836{
3937 type Output = ( usize , Option < ( T , StreamItem < E > ) > ) ;
@@ -64,17 +62,15 @@ impl<E: Fail + Sync + Send, T: Stream<Item = StreamItem<E>> + Sized + Unpin> Fut
6462
6563struct BridgeStreamState < E , T >
6664where
67- E : Fail + Sync + Send ,
65+ E : Sync + Send ,
6866 T : Stream < Item = StreamItem < E > > + Sized + Unpin ,
6967{
7068 stream : Option < T > ,
7169 current : Vec < Vec < Packet > > ,
7270 complete : bool ,
7371}
7472
75- impl < E : Fail + Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin >
76- BridgeStreamState < E , T >
77- {
73+ impl < E : Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin > BridgeStreamState < E , T > {
7874 fn is_complete ( & self ) -> bool {
7975 self . complete && self . current . is_empty ( )
8076 }
@@ -104,7 +100,7 @@ impl<E: Fail + Sync + Send, T: Stream<Item = StreamItem<E>> + Sized + Unpin>
104100// `max_buffer_time` will check the spread of packets, and if it to large it will sort what it has and pass it on.
105101
106102#[ pin_project]
107- pub struct BridgeStream < E : Fail + Sync + Send , T >
103+ pub struct BridgeStream < E : Sync + Send , T >
108104where
109105 T : Stream < Item = StreamItem < E > > + Sized + Unpin ,
110106{
@@ -114,7 +110,7 @@ where
114110 poll_queue : FuturesUnordered < CallbackFuture < E , T > > ,
115111}
116112
117- impl < E : Fail + Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin > BridgeStream < E , T > {
113+ impl < E : Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin > BridgeStream < E , T > {
118114 pub fn new (
119115 streams : Vec < T > ,
120116 max_buffer_time : Duration ,
@@ -145,7 +141,7 @@ impl<E: Fail + Sync + Send, T: Stream<Item = StreamItem<E>> + Sized + Unpin> Bri
145141 }
146142}
147143
148- fn gather_packets < E : Fail + Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin > (
144+ fn gather_packets < E : Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin > (
149145 stream_states : & mut VecDeque < BridgeStreamState < E , T > > ,
150146) -> Vec < Packet > {
151147 let mut result = vec ! [ ] ;
@@ -187,7 +183,7 @@ fn gather_packets<E: Fail + Sync + Send, T: Stream<Item = StreamItem<E>> + Sized
187183 result
188184}
189185
190- impl < E : Fail + Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin > Stream
186+ impl < E : Sync + Send , T : Stream < Item = StreamItem < E > > + Sized + Unpin > Stream
191187 for BridgeStream < E , T >
192188{
193189 type Item = StreamItem < E > ;
@@ -310,8 +306,8 @@ mod tests {
310306 }
311307 }
312308
313- #[ tokio :: test]
314- async fn packets_from_file ( ) {
309+ #[ test]
310+ fn packets_from_file ( ) {
315311 let _ = env_logger:: try_init ( ) ;
316312
317313 let pcap_path = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) )
@@ -329,16 +325,20 @@ mod tests {
329325 let packet_provider = BridgeStream :: new ( vec ! [ packet_stream] , Duration :: from_millis ( 100 ) , 2 )
330326 . expect ( "Failed to build" ) ;
331327
332- let fut_packets = packet_provider. collect :: < Vec < _ > > ( ) ;
333- let packets: Vec < _ > = fut_packets
334- . await
335- . into_iter ( )
336- . flatten ( )
337- . flatten ( )
338- . filter ( |p| p. data ( ) . len ( ) == p. actual_length ( ) as usize )
339- . collect ( ) ;
328+ let packets = smol:: run ( async move {
329+ let fut_packets = packet_provider. collect :: < Vec < _ > > ( ) ;
330+ let packets: Vec < _ > = fut_packets
331+ . await
332+ . into_iter ( )
333+ . flatten ( )
334+ . flatten ( )
335+ . filter ( |p| p. data ( ) . len ( ) == p. actual_length ( ) as usize )
336+ . collect ( ) ;
337+
338+ handle. interrupt ( ) ;
340339
341- handle. interrupt ( ) ;
340+ packets
341+ } ) ;
342342
343343 assert_eq ! ( packets. len( ) , 10 ) ;
344344
@@ -362,8 +362,9 @@ mod tests {
362362 ) ;
363363 assert_eq ! ( actual_length, 54 ) ;
364364 }
365- #[ tokio:: test]
366- async fn packets_from_file_next_bridge ( ) {
365+
366+ #[ test]
367+ fn packets_from_file_next_bridge ( ) {
367368 let _ = env_logger:: try_init ( ) ;
368369
369370 let pcap_path = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) )
@@ -381,23 +382,27 @@ mod tests {
381382 let packet_provider = BridgeStream :: new ( vec ! [ packet_stream] , Duration :: from_millis ( 100 ) , 2 )
382383 . expect ( "Failed to build" ) ;
383384
384- let fut_packets = async move {
385- let mut packet_provider = packet_provider. boxed ( ) ;
386- let mut packets = vec ! [ ] ;
387- while let Some ( p) = packet_provider. next ( ) . await {
388- info ! ( "packets returned {:?}" , p) ;
389- packets. extend ( p) ;
390- }
391- packets
392- } ;
393- let packets = fut_packets
394- . await
395- . into_iter ( )
396- . flatten ( )
397- . filter ( |p| p. data ( ) . len ( ) == p. actual_length ( ) as _ )
398- . count ( ) ;
385+ let packets = smol:: run ( async move {
386+ let fut_packets = async move {
387+ let mut packet_provider = packet_provider. boxed ( ) ;
388+ let mut packets = vec ! [ ] ;
389+ while let Some ( p) = packet_provider. next ( ) . await {
390+ info ! ( "packets returned {:?}" , p) ;
391+ packets. extend ( p) ;
392+ }
393+ packets
394+ } ;
395+ let packets = fut_packets
396+ . await
397+ . into_iter ( )
398+ . flatten ( )
399+ . filter ( |p| p. data ( ) . len ( ) == p. actual_length ( ) as _ )
400+ . count ( ) ;
401+
402+ handle. interrupt ( ) ;
399403
400- handle. interrupt ( ) ;
404+ packets
405+ } ) ;
401406
402407 assert_eq ! ( packets, 10 ) ;
403408 }
@@ -438,8 +443,9 @@ mod tests {
438443 format!( "Could not build stream {}" , stream. err( ) . unwrap( ) )
439444 ) ;
440445 }
441- #[ tokio:: test]
442- async fn packets_come_out_time_ordered ( ) {
446+
447+ #[ test]
448+ fn packets_come_out_time_ordered ( ) {
443449 let mut packets1 = vec ! [ ] ;
444450 let mut packets2 = vec ! [ ] ;
445451
@@ -463,17 +469,19 @@ mod tests {
463469 let stream1 = futures:: stream:: iter ( vec ! [ item1] ) ;
464470 let stream2 = futures:: stream:: iter ( vec ! [ item2] ) ;
465471
466- let bridge = BridgeStream :: new ( vec ! [ stream1, stream2] , Duration :: from_millis ( 100 ) , 0 ) ;
472+ let result = smol:: run ( async move {
473+ let bridge = BridgeStream :: new ( vec ! [ stream1, stream2] , Duration :: from_millis ( 100 ) , 0 ) ;
467474
468- let mut result = bridge
469- . expect ( "Unable to create BridgeStream" )
470- . collect :: < Vec < StreamItem < Error > > > ( )
471- . await ;
472- let result = result
473- . into_iter ( )
474- . map ( |r| r. unwrap ( ) )
475- . flatten ( )
476- . collect :: < Vec < Packet > > ( ) ;
475+ let result = bridge
476+ . expect ( "Unable to create BridgeStream" )
477+ . collect :: < Vec < StreamItem < Error > > > ( )
478+ . await ;
479+ result
480+ . into_iter ( )
481+ . map ( |r| r. unwrap ( ) )
482+ . flatten ( )
483+ . collect :: < Vec < Packet > > ( )
484+ } ) ;
477485 info ! ( "Result {:?}" , result) ;
478486
479487 let mut expected = vec ! [ packets1, packets2]
0 commit comments