@@ -12,6 +12,7 @@ use crate::{
1212 consumer:: Consumer ,
1313 consumers:: Consumers ,
1414 error_handler:: ErrorHandler ,
15+ events:: EventsSender ,
1516 frames:: { ExpectedReply , Frames } ,
1617 internal_rpc:: InternalRPCHandle ,
1718 message:: { BasicGetMessage , BasicReturnMessage , Delivery } ,
@@ -54,9 +55,10 @@ pub struct Channel {
5455 internal_rpc : InternalRPCHandle ,
5556 frames : Frames ,
5657 error_handler : ErrorHandler ,
58+ events_sender : EventsSender ,
5759 executor : Arc < dyn FullExecutor + Send + Sync > ,
5860 channel_closer : Option < Arc < ChannelCloser > > ,
59- connection_closer : Option < Arc < ConnectionCloser > > ,
61+ _connection_closer : Option < Arc < ConnectionCloser > > ,
6062 recovery_config : RecoveryConfig ,
6163}
6264
@@ -94,6 +96,7 @@ impl Channel {
9496 executor : Arc < dyn FullExecutor + Send + Sync > ,
9597 connection_closer : Option < Arc < ConnectionCloser > > ,
9698 recovery_config : RecoveryConfig ,
99+ events_sender : EventsSender ,
97100 ) -> Channel {
98101 let returned_messages = ReturnedMessages :: default ( ) ;
99102 let status = ChannelStatus :: new ( channel_id, internal_rpc. clone ( ) ) ;
@@ -120,9 +123,10 @@ impl Channel {
120123 internal_rpc,
121124 frames,
122125 error_handler : ErrorHandler :: default ( ) ,
126+ events_sender,
123127 executor,
124128 channel_closer,
125- connection_closer,
129+ _connection_closer : connection_closer,
126130 recovery_config,
127131 }
128132 }
@@ -193,25 +197,9 @@ impl Channel {
193197 }
194198
195199 pub ( crate ) fn clone_internal ( & self ) -> Self {
196- Self {
197- id : self . id ,
198- configuration : self . configuration . clone ( ) ,
199- status : self . status . clone ( ) ,
200- connection_status : self . connection_status . clone ( ) ,
201- local_registry : self . local_registry . clone ( ) ,
202- acknowledgements : self . acknowledgements . clone ( ) ,
203- consumers : self . consumers . clone ( ) ,
204- basic_get_delivery : self . basic_get_delivery . clone ( ) ,
205- returned_messages : self . returned_messages . clone ( ) ,
206- waker : self . waker . clone ( ) ,
207- internal_rpc : self . internal_rpc . clone ( ) ,
208- frames : self . frames . clone ( ) ,
209- error_handler : self . error_handler . clone ( ) ,
210- executor : self . executor . clone ( ) ,
211- channel_closer : None ,
212- connection_closer : self . connection_closer . clone ( ) ,
213- recovery_config : self . recovery_config . clone ( ) ,
214- }
200+ let mut this = self . clone ( ) ;
201+ this. channel_closer = None ;
202+ this
215203 }
216204
217205 fn wake ( & self ) {
@@ -658,6 +646,7 @@ impl Channel {
658646 if !recover {
659647 self . set_closed ( err) ;
660648 if let Some ( error) = error {
649+ self . events_sender . error ( error. clone ( ) ) ;
661650 self . error_handler . on_error ( error) ;
662651 }
663652 }
@@ -883,6 +872,7 @@ impl Channel {
883872 {
884873 self . connection_status . set_state ( ConnectionState :: Connected ) ;
885874 resolver. resolve ( * connection) ;
875+ self . events_sender . connected ( ) ;
886876 Ok ( ( ) )
887877 } else {
888878 error ! ( ?state, ?step, "Invalid state" ) ;
@@ -919,6 +909,7 @@ impl Channel {
919909
920910 fn on_connection_blocked_received ( & self , _method : protocol:: connection:: Blocked ) -> Result < ( ) > {
921911 self . connection_status . block ( ) ;
912+ self . events_sender . connection_blocked ( ) ;
922913 Ok ( ( ) )
923914 }
924915
@@ -927,6 +918,7 @@ impl Channel {
927918 _method : protocol:: connection:: Unblocked ,
928919 ) -> Result < ( ) > {
929920 self . connection_status . unblock ( ) ;
921+ self . events_sender . connection_unblocked ( ) ;
930922 self . wake ( ) ;
931923 Ok ( ( ) )
932924 }
0 commit comments