@@ -24,6 +24,7 @@ use std::time::Instant;
2424use bytes:: BufMut ;
2525use bytes:: Bytes ;
2626use bytes:: BytesMut ;
27+ use rocketmq_rust:: ArcMut ;
2728use tokio:: io:: AsyncReadExt ;
2829use tokio:: io:: AsyncWriteExt ;
2930use tokio:: net:: tcp:: OwnedReadHalf ;
@@ -48,7 +49,7 @@ use crate::ha::ha_connection_state::HAConnectionState;
4849pub const TRANSFER_HEADER_SIZE : usize = 8 + 4 ;
4950
5051pub struct DefaultHAConnection {
51- ha_service : Arc < DefaultHAService > ,
52+ ha_service : ArcMut < DefaultHAService > ,
5253 socket_stream : Option < TcpStream > ,
5354 client_address : String ,
5455 write_socket_service : Option < WriteSocketService > ,
@@ -64,7 +65,7 @@ pub struct DefaultHAConnection {
6465impl DefaultHAConnection {
6566 /// Create a new DefaultHAConnection
6667 pub async fn new (
67- ha_service : Arc < DefaultHAService > ,
68+ ha_service : ArcMut < DefaultHAService > ,
6869 socket_stream : TcpStream ,
6970 message_store_config : Arc < MessageStoreConfig > ,
7071 ) -> Result < Self , HAConnectionError > {
@@ -83,7 +84,9 @@ impl DefaultHAConnection {
8384 let flow_monitor = Arc :: new ( FlowMonitor :: new ( message_store_config. clone ( ) ) ) ;
8485
8586 // Increment connection count
86- // ha_service.increment_connection_count();
87+ ha_service
88+ . get_connection_count ( )
89+ . fetch_add ( 1 , Ordering :: SeqCst ) ;
8790
8891 let ( shutdown_sender, shutdown_receiver) = mpsc:: channel ( 1 ) ;
8992
@@ -116,7 +119,7 @@ impl DefaultHAConnection {
116119 let read_service = ReadSocketService :: new (
117120 reader,
118121 self . client_address . clone ( ) ,
119- Arc :: clone ( & self . ha_service ) ,
122+ ArcMut :: clone ( & self . ha_service ) ,
120123 Arc :: clone ( & self . current_state ) ,
121124 self . slave_request_offset . clone ( ) ,
122125 self . slave_ack_offset . clone ( ) ,
@@ -128,7 +131,7 @@ impl DefaultHAConnection {
128131 let write_service = WriteSocketService :: new (
129132 writer,
130133 self . client_address . clone ( ) ,
131- Arc :: clone ( & self . ha_service ) ,
134+ ArcMut :: clone ( & self . ha_service ) ,
132135 Arc :: clone ( & self . current_state ) ,
133136 self . slave_request_offset . clone ( ) ,
134137 Arc :: clone ( & self . flow_monitor ) ,
@@ -228,7 +231,7 @@ const REPORT_HEADER_SIZE: usize = 8;
228231pub struct ReadSocketService {
229232 reader : Option < OwnedReadHalf > ,
230233 client_address : String ,
231- ha_service : Arc < DefaultHAService > ,
234+ ha_service : ArcMut < DefaultHAService > ,
232235 current_state : Arc < RwLock < HAConnectionState > > ,
233236 slave_request_offset : Arc < AtomicI64 > ,
234237 slave_ack_offset : Arc < AtomicI64 > ,
@@ -241,7 +244,7 @@ impl ReadSocketService {
241244 pub async fn new (
242245 reader : OwnedReadHalf ,
243246 client_address : String ,
244- ha_service : Arc < DefaultHAService > ,
247+ ha_service : ArcMut < DefaultHAService > ,
245248 current_state : Arc < RwLock < HAConnectionState > > ,
246249 slave_request_offset : Arc < AtomicI64 > ,
247250 slave_ack_offset : Arc < AtomicI64 > ,
@@ -265,7 +268,7 @@ impl ReadSocketService {
265268 pub async fn start ( & mut self ) -> Result < ( ) , HAConnectionError > {
266269 let socket_stream = self . reader . take ( ) ;
267270 let client_address = self . client_address . clone ( ) ;
268- let ha_service = Arc :: clone ( & self . ha_service ) ;
271+ let ha_service = ArcMut :: clone ( & self . ha_service ) ;
269272 let current_state = Arc :: clone ( & self . current_state ) ;
270273 let slave_request_offset = self . slave_request_offset . clone ( ) ;
271274 let slave_ack_offset = self . slave_ack_offset . clone ( ) ;
@@ -291,7 +294,7 @@ impl ReadSocketService {
291294 async fn run_service (
292295 mut socket_stream : Option < OwnedReadHalf > ,
293296 client_address : String ,
294- ha_service : Arc < DefaultHAService > ,
297+ ha_service : ArcMut < DefaultHAService > ,
295298 current_state : Arc < RwLock < HAConnectionState > > ,
296299 slave_request_offset : Arc < AtomicI64 > ,
297300 slave_ack_offset : Arc < AtomicI64 > ,
@@ -404,7 +407,7 @@ impl ReadSocketService {
404407pub struct WriteSocketService {
405408 writer : Option < OwnedWriteHalf > ,
406409 client_address : String ,
407- ha_service : Arc < DefaultHAService > ,
410+ ha_service : ArcMut < DefaultHAService > ,
408411 current_state : Arc < RwLock < HAConnectionState > > ,
409412 slave_request_offset : Arc < AtomicI64 > ,
410413 flow_monitor : Arc < FlowMonitor > ,
@@ -417,7 +420,7 @@ impl WriteSocketService {
417420 pub async fn new (
418421 writer : OwnedWriteHalf ,
419422 client_address : String ,
420- ha_service : Arc < DefaultHAService > ,
423+ ha_service : ArcMut < DefaultHAService > ,
421424 current_state : Arc < RwLock < HAConnectionState > > ,
422425 slave_request_offset : Arc < AtomicI64 > ,
423426 flow_monitor : Arc < FlowMonitor > ,
@@ -439,7 +442,7 @@ impl WriteSocketService {
439442 pub async fn start ( & mut self ) -> Result < ( ) , HAConnectionError > {
440443 let socket_stream = self . writer . take ( ) ;
441444 let client_address = self . client_address . clone ( ) ;
442- let ha_service = Arc :: clone ( & self . ha_service ) ;
445+ let ha_service = ArcMut :: clone ( & self . ha_service ) ;
443446 let current_state = Arc :: clone ( & self . current_state ) ;
444447 let slave_request_offset = self . slave_request_offset . clone ( ) ;
445448 let flow_monitor = Arc :: clone ( & self . flow_monitor ) ;
@@ -467,7 +470,7 @@ impl WriteSocketService {
467470 async fn run_service (
468471 mut socket_stream : Option < OwnedWriteHalf > ,
469472 client_address : String ,
470- ha_service : Arc < DefaultHAService > ,
473+ ha_service : ArcMut < DefaultHAService > ,
471474 current_state : Arc < RwLock < HAConnectionState > > ,
472475 slave_request_offset : Arc < AtomicI64 > ,
473476 flow_monitor : Arc < FlowMonitor > ,
0 commit comments