@@ -3,36 +3,60 @@ use std::sync::Arc;
33use crate :: broadcaster:: Broadcaster ;
44use crate :: { receiver, sender} ;
55
6+ #[ derive( Clone , Debug ) ]
7+ pub enum SenderStatus {
8+ Enabled ,
9+ Disabled ,
10+ }
11+
12+ impl From < bool > for SenderStatus {
13+ fn from ( enabled : bool ) -> Self {
14+ if enabled {
15+ Self :: Enabled
16+ } else {
17+ Self :: Disabled
18+ }
19+ }
20+ }
21+
22+ impl From < SenderStatus > for bool {
23+ fn from ( sender_status : SenderStatus ) -> Self {
24+ match sender_status {
25+ SenderStatus :: Enabled => true ,
26+ SenderStatus :: Disabled => false ,
27+ }
28+ }
29+ }
30+
631#[ derive( Clone , Debug ) ]
732pub struct EventBus < Event : Sync + Send + Clone + ' static > {
8- pub enable_sender : bool ,
33+ pub sender_status : SenderStatus ,
934 pub broadcaster : Broadcaster < Event > ,
1035}
1136
1237impl < Event : Sync + Send + Clone + ' static > Default for EventBus < Event > {
1338 fn default ( ) -> Self {
14- let enable_sender = true ;
39+ let sender_status = SenderStatus :: Enabled ;
1540 let broadcaster = Broadcaster :: < Event > :: default ( ) ;
1641
17- Self :: new ( enable_sender , broadcaster)
42+ Self :: new ( sender_status , broadcaster)
1843 }
1944}
2045
2146impl < Event : Sync + Send + Clone + ' static > EventBus < Event > {
2247 #[ must_use]
23- pub fn new ( enable_sender : bool , broadcaster : Broadcaster < Event > ) -> Self {
48+ pub fn new ( sender_status : SenderStatus , broadcaster : Broadcaster < Event > ) -> Self {
2449 Self {
25- enable_sender ,
50+ sender_status ,
2651 broadcaster,
2752 }
2853 }
2954
3055 #[ must_use]
3156 pub fn sender ( & self ) -> Option < Arc < dyn sender:: Sender < Event = Event > > > {
32- if self . enable_sender {
33- Some ( Arc :: new ( self . broadcaster . clone ( ) ) )
34- } else {
35- None
57+ match self . sender_status {
58+ SenderStatus :: Enabled => Some ( Arc :: new ( self . broadcaster . clone ( ) ) ) ,
59+ SenderStatus :: Disabled => None ,
3660 }
3761 }
3862
@@ -50,14 +74,14 @@ mod tests {
5074
5175 #[ tokio:: test]
5276 async fn it_should_provide_an_event_sender_when_enabled ( ) {
53- let bus = EventBus :: < String > :: new ( true , Broadcaster :: default ( ) ) ;
77+ let bus = EventBus :: < String > :: new ( SenderStatus :: Enabled , Broadcaster :: default ( ) ) ;
5478
5579 assert ! ( bus. sender( ) . is_some( ) ) ;
5680 }
5781
5882 #[ tokio:: test]
5983 async fn it_should_not_provide_event_sender_when_disabled ( ) {
60- let bus = EventBus :: < String > :: new ( false , Broadcaster :: default ( ) ) ;
84+ let bus = EventBus :: < String > :: new ( SenderStatus :: Disabled , Broadcaster :: default ( ) ) ;
6185
6286 assert ! ( bus. sender( ) . is_none( ) ) ;
6387 }
0 commit comments