1
- use tokio:: sync:: mpsc ;
1
+ use tokio:: sync:: broadcast :: Receiver ;
2
2
3
3
use super :: event:: listener:: dispatch_events;
4
- use super :: event:: sender:: { ChannelSender , Sender } ;
5
4
use super :: event:: Event ;
6
5
use super :: repository:: Repository ;
7
6
8
- const CHANNEL_BUFFER_SIZE : usize = 65_535 ;
9
-
10
7
/// The service responsible for keeping tracker metrics (listening to statistics events and handle them).
11
8
///
12
9
/// It actively listen to new statistics events. When it receives a new event
@@ -29,31 +26,15 @@ impl Keeper {
29
26
}
30
27
}
31
28
32
- #[ must_use]
33
- pub fn new_active_instance ( ) -> ( Box < dyn Sender > , Repository ) {
34
- let mut stats_tracker = Self :: new ( ) ;
35
-
36
- let stats_event_sender = stats_tracker. run_event_listener ( ) ;
37
-
38
- ( stats_event_sender, stats_tracker. repository )
39
- }
40
-
41
- pub fn run_event_listener ( & mut self ) -> Box < dyn Sender > {
42
- let ( sender, receiver) = mpsc:: channel :: < Event > ( CHANNEL_BUFFER_SIZE ) ;
43
-
29
+ pub fn run_event_listener ( & mut self , receiver : Receiver < Event > ) {
44
30
let stats_repository = self . repository . clone ( ) ;
45
31
46
32
tokio:: spawn ( async move { dispatch_events ( receiver, stats_repository) . await } ) ;
47
-
48
- Box :: new ( ChannelSender { sender } )
49
33
}
50
34
}
51
35
52
36
#[ cfg( test) ]
53
37
mod tests {
54
- use std:: net:: { IpAddr , Ipv4Addr , SocketAddr } ;
55
-
56
- use crate :: statistics:: event:: { ConnectionContext , Event } ;
57
38
use crate :: statistics:: keeper:: Keeper ;
58
39
use crate :: statistics:: metrics:: Metrics ;
59
40
@@ -65,22 +46,4 @@ mod tests {
65
46
66
47
assert_eq ! ( stats. udp4_announces_handled, Metrics :: default ( ) . udp4_announces_handled) ;
67
48
}
68
-
69
- #[ tokio:: test]
70
- async fn should_create_an_event_sender_to_send_statistical_events ( ) {
71
- let mut stats_tracker = Keeper :: new ( ) ;
72
-
73
- let event_sender = stats_tracker. run_event_listener ( ) ;
74
-
75
- let result = event_sender
76
- . send_event ( Event :: UdpConnect {
77
- context : ConnectionContext :: new (
78
- SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 203 , 0 , 113 , 195 ) ) , 8080 ) ,
79
- SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( 203 , 0 , 113 , 196 ) ) , 6969 ) ,
80
- ) ,
81
- } )
82
- . await ;
83
-
84
- assert ! ( result. is_some( ) ) ;
85
- }
86
49
}
0 commit comments