@@ -9,6 +9,7 @@ use crate::{
99 heartbeat:: Heartbeat ,
1010 internal_rpc:: { InternalRPC , InternalRPCHandle } ,
1111 io_loop:: IoLoop ,
12+ reactor:: FullReactor ,
1213 runtime,
1314 socket_state:: SocketState ,
1415 tcp:: { AMQPUriTcpExt , OwnedTLSConfig } ,
@@ -18,6 +19,7 @@ use crate::{
1819} ;
1920use amq_protocol:: frame:: { AMQPFrame , ProtocolVersion } ;
2021use async_trait:: async_trait;
22+ use executor_trait:: FullExecutor ;
2123use std:: { fmt, io, sync:: Arc } ;
2224use tracing:: { Level , level_enabled, trace} ;
2325
@@ -181,7 +183,11 @@ impl Connection {
181183 pub async fn connector (
182184 uri : AMQPUri ,
183185 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 > )
185191 + Send
186192 + Sync ,
187193 > ,
@@ -194,15 +200,15 @@ impl Connection {
194200 let frames = Frames :: default ( ) ;
195201 let socket_state = SocketState :: default ( ) ;
196202 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 ( ) ) ;
198204 let channels = Channels :: new (
199205 configuration. clone ( ) ,
200206 status. clone ( ) ,
201207 socket_state. handle ( ) ,
202208 internal_rpc. handle ( ) ,
203209 frames. clone ( ) ,
204210 heartbeat. clone ( ) ,
205- executor,
211+ executor. clone ( ) ,
206212 uri. clone ( ) ,
207213 options. clone ( ) ,
208214 ) ;
@@ -220,7 +226,7 @@ impl Connection {
220226 ) ;
221227
222228 internal_rpc. start ( conn. channels . clone ( ) ) ;
223- conn. io_loop . register ( io_loop. start ( ) ?) ;
229+ conn. io_loop . register ( io_loop. start ( executor , reactor ) ?) ;
224230 conn. start ( uri, options) . await
225231 }
226232
@@ -288,12 +294,10 @@ impl Connect for AMQPUri {
288294 options : ConnectionProperties ,
289295 config : OwnedTLSConfig ,
290296 ) -> Result < Connection > {
291- let executor = runtime:: executor ( ) ?;
292- let reactor = runtime:: reactor ( ) ?;
293297 let config = Arc :: new ( config) ;
294298 Connection :: connector (
295299 self ,
296- Box :: new ( move |uri| {
300+ Box :: new ( move |uri, executor , reactor | {
297301 let config = config. clone ( ) ;
298302 let reactor = reactor. clone ( ) ;
299303 let executor = executor. clone ( ) ;
0 commit comments