@@ -9,6 +9,7 @@ use crate::{
9
9
heartbeat:: Heartbeat ,
10
10
internal_rpc:: { InternalRPC , InternalRPCHandle } ,
11
11
io_loop:: IoLoop ,
12
+ reactor:: FullReactor ,
12
13
runtime,
13
14
socket_state:: SocketState ,
14
15
tcp:: { AMQPUriTcpExt , OwnedTLSConfig } ,
@@ -18,6 +19,7 @@ use crate::{
18
19
} ;
19
20
use amq_protocol:: frame:: { AMQPFrame , ProtocolVersion } ;
20
21
use async_trait:: async_trait;
22
+ use executor_trait:: FullExecutor ;
21
23
use std:: { fmt, io, sync:: Arc } ;
22
24
use tracing:: { Level , level_enabled, trace} ;
23
25
@@ -181,7 +183,11 @@ impl Connection {
181
183
pub async fn connector (
182
184
uri : AMQPUri ,
183
185
connect : Box <
184
- dyn ( Fn ( AMQPUri ) -> Box < dyn Future < Output = io:: Result < AsyncTcpStream > > + Send > )
186
+ dyn ( Fn (
187
+ AMQPUri ,
188
+ Arc < dyn FullExecutor + Send + Sync + ' static > ,
189
+ Arc < dyn FullReactor + Send + Sync + ' static > ,
190
+ ) -> Box < dyn Future < Output = io:: Result < AsyncTcpStream > > + Send > )
185
191
+ Send
186
192
+ Sync ,
187
193
> ,
@@ -194,15 +200,15 @@ impl Connection {
194
200
let frames = Frames :: default ( ) ;
195
201
let socket_state = SocketState :: default ( ) ;
196
202
let internal_rpc = InternalRPC :: new ( executor. clone ( ) , socket_state. handle ( ) ) ;
197
- let heartbeat = Heartbeat :: new ( status. clone ( ) , executor. clone ( ) , reactor) ;
203
+ let heartbeat = Heartbeat :: new ( status. clone ( ) , executor. clone ( ) , reactor. clone ( ) ) ;
198
204
let channels = Channels :: new (
199
205
configuration. clone ( ) ,
200
206
status. clone ( ) ,
201
207
socket_state. handle ( ) ,
202
208
internal_rpc. handle ( ) ,
203
209
frames. clone ( ) ,
204
210
heartbeat. clone ( ) ,
205
- executor,
211
+ executor. clone ( ) ,
206
212
uri. clone ( ) ,
207
213
options. clone ( ) ,
208
214
) ;
@@ -220,7 +226,7 @@ impl Connection {
220
226
) ;
221
227
222
228
internal_rpc. start ( conn. channels . clone ( ) ) ;
223
- conn. io_loop . register ( io_loop. start ( ) ?) ;
229
+ conn. io_loop . register ( io_loop. start ( executor , reactor ) ?) ;
224
230
conn. start ( uri, options) . await
225
231
}
226
232
@@ -288,12 +294,10 @@ impl Connect for AMQPUri {
288
294
options : ConnectionProperties ,
289
295
config : OwnedTLSConfig ,
290
296
) -> Result < Connection > {
291
- let executor = runtime:: executor ( ) ?;
292
- let reactor = runtime:: reactor ( ) ?;
293
297
let config = Arc :: new ( config) ;
294
298
Connection :: connector (
295
299
self ,
296
- Box :: new ( move |uri| {
300
+ Box :: new ( move |uri, executor , reactor | {
297
301
let config = config. clone ( ) ;
298
302
let reactor = reactor. clone ( ) ;
299
303
let executor = executor. clone ( ) ;
0 commit comments