Skip to content

Commit c708a74

Browse files
committed
connection_status: internal refactor to please clippy
1 parent 40c9fb2 commit c708a74

4 files changed

Lines changed: 40 additions & 33 deletions

File tree

src/channel.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use crate::{
88
channel_receiver_state::DeliveryCause,
99
channel_status::{ChannelState, ChannelStatus},
1010
connection_closer::ConnectionCloser,
11-
connection_status::{ConnectionState, ConnectionStep},
11+
connection_status::{ConnectionResolver, ConnectionState, ConnectionStep},
1212
consumer::Consumer,
1313
consumers::Consumers,
1414
error_handler::ErrorHandler,
@@ -607,15 +607,15 @@ impl Channel {
607607

608608
fn before_connection_start_ok(
609609
&self,
610-
resolver: PromiseResolver<Connection>,
610+
resolver: ConnectionResolver,
611611
connection: Connection,
612612
credentials: Credentials,
613613
) {
614614
self.connection_status
615615
.set_connection_step(ConnectionStep::StartOk(resolver, connection, credentials));
616616
}
617617

618-
fn before_connection_open(&self, resolver: PromiseResolver<Connection>) {
618+
fn before_connection_open(&self, resolver: ConnectionResolver) {
619619
self.connection_status
620620
.set_connection_step(ConnectionStep::Open(resolver));
621621
}
@@ -725,7 +725,6 @@ impl Channel {
725725
if let (
726726
ConnectionState::Connecting,
727727
Some(ConnectionStep::ProtocolHeader(
728-
_,
729728
resolver,
730729
connection,
731730
credentials,

src/connection_status.rs

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ impl ConnectionStatus {
5656
pub(crate) fn connection_resolver(&self) -> Option<PromiseResolver<Connection>> {
5757
let resolver = self.lock_inner().connection_resolver();
5858
// We carry the Connection here to drop the lock() above before dropping the Connection
59-
resolver.map(|(_, resolver, _connection)| resolver)
59+
resolver.map(|(resolver, _connection)| resolver.resolver_in)
6060
}
6161

6262
pub(crate) fn connection_step_name(&self) -> Option<&'static str> {
@@ -128,17 +128,34 @@ impl ConnectionStatus {
128128
}
129129
}
130130

131+
pub(crate) struct ConnectionResolver {
132+
resolver_out: Option<PromiseResolver<()>>,
133+
resolver_in: PromiseResolver<Connection>,
134+
}
135+
136+
impl ConnectionResolver {
137+
pub(crate) fn resolve(&self, conn: Connection) {
138+
self.resolver_in.resolve(conn);
139+
}
140+
141+
fn reject(&self, err: Error) {
142+
if let Some(resolver) = self.resolver_out.as_ref() {
143+
resolver.reject(err.clone());
144+
}
145+
self.resolver_in.reject(err);
146+
}
147+
}
148+
131149
pub(crate) enum ConnectionStep {
132150
ProtocolHeader(
133-
PromiseResolver<()>,
134-
PromiseResolver<Connection>,
151+
ConnectionResolver,
135152
Connection,
136153
Credentials,
137154
SASLMechanism,
138155
ConnectionProperties,
139156
),
140-
StartOk(PromiseResolver<Connection>, Connection, Credentials),
141-
Open(PromiseResolver<Connection>),
157+
StartOk(ConnectionResolver, Connection, Credentials),
158+
Open(ConnectionResolver),
142159
}
143160

144161
#[derive(Clone, Copy, Debug, Default, PartialEq)]
@@ -201,8 +218,10 @@ impl Inner {
201218
) -> Result<()> {
202219
self.state = ConnectionState::Connecting;
203220
self.connection_step = Some(ConnectionStep::ProtocolHeader(
204-
resolver_out,
205-
resolver_in,
221+
ConnectionResolver {
222+
resolver_out: Some(resolver_out),
223+
resolver_in,
224+
},
206225
conn,
207226
creds,
208227
mechanism,
@@ -218,23 +237,15 @@ impl Inner {
218237
self.blocked = false;
219238
}
220239

221-
fn connection_resolver(
222-
&mut self,
223-
) -> Option<(
224-
Option<PromiseResolver<()>>,
225-
PromiseResolver<Connection>,
226-
Option<Connection>,
227-
)> {
240+
fn connection_resolver(&mut self) -> Option<(ConnectionResolver, Option<Connection>)> {
228241
self.connection_step
229242
.take()
230243
.map(|connection_step| match connection_step {
231-
ConnectionStep::ProtocolHeader(resolver_out, resolver_in, connection, ..) => {
232-
(Some(resolver_out), resolver_in, Some(connection))
233-
}
234-
ConnectionStep::StartOk(resolver, connection, ..) => {
235-
(None, resolver, Some(connection))
244+
ConnectionStep::ProtocolHeader(resolver, connection, ..) => {
245+
(resolver, Some(connection))
236246
}
237-
ConnectionStep::Open(resolver, ..) => (None, resolver, None),
247+
ConnectionStep::StartOk(resolver, connection, ..) => (resolver, Some(connection)),
248+
ConnectionStep::Open(resolver, ..) => (resolver, None),
238249
})
239250
}
240251

@@ -251,11 +262,8 @@ impl Inner {
251262
}
252263

253264
fn poison(&mut self, err: Error) {
254-
if let Some((resolver_out, resolver_in, _connection)) = self.connection_resolver() {
255-
if let Some(resolver) = resolver_out {
256-
resolver.reject(err.clone());
257-
}
258-
resolver_in.reject(err.clone());
265+
if let Some((resolver, _connection)) = self.connection_resolver() {
266+
resolver.reject(err.clone());
259267
}
260268
self.poison = Some(err);
261269
}

src/generated.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,7 @@ impl Channel {
842842
mechanism: &str,
843843
response: &str,
844844
locale: &str,
845-
resolver: PromiseResolver<Connection>,
845+
resolver: ConnectionResolver,
846846
connection: Connection,
847847
credentials: Credentials,
848848
) -> Result<()> {
@@ -916,7 +916,7 @@ impl Channel {
916916
&self,
917917
virtual_host: &str,
918918
connection: Box<Connection>,
919-
conn_resolver: PromiseResolver<Connection>,
919+
conn_resolver: ConnectionResolver,
920920
) -> Result<()> {
921921
let method = AMQPClass::Connection(protocol::connection::AMQPMethod::Open(
922922
protocol::connection::Open {

templates/lapin.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"extra_args": [
99
{
1010
"name": "resolver",
11-
"type": "PromiseResolver<Connection>"
11+
"type": "ConnectionResolver"
1212
},
1313
{
1414
"name": "connection",
@@ -40,7 +40,7 @@
4040
},
4141
{
4242
"name": "conn_resolver",
43-
"type": "PromiseResolver<Connection>"
43+
"type": "ConnectionResolver"
4444
}
4545
],
4646
"send_hook": {

0 commit comments

Comments
 (0)