@@ -31,9 +31,8 @@ use crate::memdx::error::{CancellationErrorKind, Error, ErrorKind};
31
31
use crate :: memdx:: packet:: { RequestPacket , ResponsePacket } ;
32
32
use crate :: memdx:: pendingop:: ClientPendingOp ;
33
33
34
- type ResponseSender = Sender < error:: Result < ClientResponse > > ;
35
- type OpaqueMap = HashMap < u32 , Arc < ResponseSender > > ;
36
- pub ( crate ) type CancellationSender = UnboundedSender < ( u32 , CancellationErrorKind ) > ;
34
+ pub ( crate ) type ResponseSender = Sender < error:: Result < ClientResponse > > ;
35
+ pub ( crate ) type OpaqueMap = HashMap < u32 , Arc < ResponseSender > > ;
37
36
38
37
#[ derive( Debug ) ]
39
38
struct ReadLoopOptions {
@@ -65,8 +64,6 @@ pub struct Client {
65
64
66
65
writer : Mutex < FramedWrite < WriteHalf < TcpStream > , KeyValueCodec > > ,
67
66
read_handle : Mutex < ClientReadHandle > ,
68
-
69
- cancel_tx : CancellationSender ,
70
67
close_tx : Sender < ( ) > ,
71
68
72
69
local_addr : Option < SocketAddr > ,
@@ -101,12 +98,10 @@ impl Client {
101
98
102
99
async fn on_read_loop_close (
103
100
stream : FramedRead < ReadHalf < TcpStream > , KeyValueCodec > ,
104
- op_cancel_rx : UnboundedReceiver < ( u32 , CancellationErrorKind ) > ,
105
101
opaque_map : MutexGuard < ' _ , OpaqueMap > ,
106
102
on_connection_close_tx : Option < oneshot:: Sender < error:: Result < ( ) > > > ,
107
103
) {
108
104
drop ( stream) ;
109
- drop ( op_cancel_rx) ;
110
105
111
106
Self :: drain_opaque_map ( opaque_map) . await ;
112
107
@@ -117,44 +112,16 @@ impl Client {
117
112
118
113
async fn read_loop (
119
114
mut stream : FramedRead < ReadHalf < TcpStream > , KeyValueCodec > ,
120
- mut op_cancel_rx : UnboundedReceiver < ( u32 , CancellationErrorKind ) > ,
121
115
opaque_map : Arc < Mutex < OpaqueMap > > ,
122
116
mut opts : ReadLoopOptions ,
123
117
) {
124
118
loop {
125
119
select ! {
126
120
( _) = opts. on_client_close_rx. recv( ) => {
127
121
let guard = opaque_map. lock( ) . await ;
128
- Self :: on_read_loop_close( stream, op_cancel_rx , guard, opts. on_connection_close_tx) . await ;
122
+ Self :: on_read_loop_close( stream, guard, opts. on_connection_close_tx) . await ;
129
123
return ;
130
124
} ,
131
- ( cancel_reason) = op_cancel_rx. recv( ) => {
132
- match cancel_reason {
133
- Some ( cancel_info) => {
134
- let requests: Arc <Mutex <OpaqueMap >> = Arc :: clone( & opaque_map) ;
135
- let mut map = requests. lock( ) . await ;
136
-
137
- let t = map. remove( & cancel_info. 0 ) ;
138
-
139
- if let Some ( map_entry) = t {
140
- let sender = Arc :: clone( & map_entry) ;
141
- drop( map) ;
142
-
143
- sender
144
- . send( Err ( ErrorKind :: Cancelled ( cancel_info. 1 ) . into( ) ) )
145
- . await
146
- . unwrap( ) ;
147
- } else {
148
- drop( map) ;
149
- }
150
-
151
- drop( requests) ;
152
- }
153
- None => {
154
- return ;
155
- }
156
- }
157
- } ,
158
125
( next) = stream. next( ) => {
159
126
match next {
160
127
Some ( input) => {
@@ -230,7 +197,7 @@ impl Client {
230
197
}
231
198
None => {
232
199
let guard = opaque_map. lock( ) . await ;
233
- Self :: on_read_loop_close( stream, op_cancel_rx , guard, opts. on_connection_close_tx) . await ;
200
+ Self :: on_read_loop_close( stream, guard, opts. on_connection_close_tx) . await ;
234
201
return ;
235
202
}
236
203
}
@@ -260,7 +227,6 @@ impl Dispatcher for Client {
260
227
261
228
let uuid = Uuid :: new_v4 ( ) . to_string ( ) ;
262
229
263
- let ( cancel_tx, cancel_rx) = mpsc:: unbounded_channel ( ) ;
264
230
let ( close_tx, close_rx) = mpsc:: channel :: < ( ) > ( 1 ) ;
265
231
266
232
let opaque_map = Arc :: new ( Mutex :: new ( OpaqueMap :: default ( ) ) ) ;
@@ -271,7 +237,6 @@ impl Dispatcher for Client {
271
237
let read_handle = tokio:: spawn ( async move {
272
238
Client :: read_loop (
273
239
reader,
274
- cancel_rx,
275
240
read_opaque_map,
276
241
ReadLoopOptions {
277
242
client_id : read_uuid,
@@ -290,7 +255,6 @@ impl Dispatcher for Client {
290
255
opaque_map,
291
256
client_id : uuid,
292
257
293
- cancel_tx,
294
258
close_tx,
295
259
296
260
writer : Mutex :: new ( writer) ,
@@ -313,7 +277,7 @@ impl Dispatcher for Client {
313
277
match writer. send ( packet) . await {
314
278
Ok ( _) => Ok ( ClientPendingOp :: new (
315
279
opaque,
316
- self . cancel_tx . clone ( ) ,
280
+ self . opaque_map . clone ( ) ,
317
281
response_rx,
318
282
) ) ,
319
283
Err ( e) => {
0 commit comments