Skip to content

Commit f828db6

Browse files
authored
refactor(request-response): revise public API to follow naming convention (#3159)
1 parent cbf0a27 commit f828db6

File tree

11 files changed

+389
-228
lines changed

11 files changed

+389
-228
lines changed

examples/file-sharing.rs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,7 @@ mod network {
215215
use libp2p::kad::record::store::MemoryStore;
216216
use libp2p::kad::{GetProvidersOk, Kademlia, KademliaEvent, QueryId, QueryResult};
217217
use libp2p::multiaddr::Protocol;
218-
use libp2p::request_response::{
219-
ProtocolSupport, RequestId, RequestResponse, RequestResponseCodec, RequestResponseEvent,
220-
RequestResponseMessage, ResponseChannel,
221-
};
218+
use libp2p::request_response::{self, ProtocolSupport, RequestId, ResponseChannel};
222219
use libp2p::swarm::{ConnectionHandlerUpgrErr, NetworkBehaviour, Swarm, SwarmEvent};
223220
use std::collections::{hash_map, HashMap, HashSet};
224221
use std::iter;
@@ -254,7 +251,7 @@ mod network {
254251
libp2p::development_transport(id_keys).await?,
255252
ComposedBehaviour {
256253
kademlia: Kademlia::new(peer_id, MemoryStore::new(peer_id)),
257-
request_response: RequestResponse::new(
254+
request_response: request_response::Behaviour::new(
258255
FileExchangeCodec(),
259256
iter::once((FileExchangeProtocol(), ProtocolSupport::Full)),
260257
Default::default(),
@@ -459,9 +456,9 @@ mod network {
459456
)) => {}
460457
SwarmEvent::Behaviour(ComposedEvent::Kademlia(_)) => {}
461458
SwarmEvent::Behaviour(ComposedEvent::RequestResponse(
462-
RequestResponseEvent::Message { message, .. },
459+
request_response::Event::Message { message, .. },
463460
)) => match message {
464-
RequestResponseMessage::Request {
461+
request_response::Message::Request {
465462
request, channel, ..
466463
} => {
467464
self.event_sender
@@ -472,7 +469,7 @@ mod network {
472469
.await
473470
.expect("Event receiver not to be dropped.");
474471
}
475-
RequestResponseMessage::Response {
472+
request_response::Message::Response {
476473
request_id,
477474
response,
478475
} => {
@@ -484,7 +481,7 @@ mod network {
484481
}
485482
},
486483
SwarmEvent::Behaviour(ComposedEvent::RequestResponse(
487-
RequestResponseEvent::OutboundFailure {
484+
request_response::Event::OutboundFailure {
488485
request_id, error, ..
489486
},
490487
)) => {
@@ -495,7 +492,7 @@ mod network {
495492
.send(Err(Box::new(error)));
496493
}
497494
SwarmEvent::Behaviour(ComposedEvent::RequestResponse(
498-
RequestResponseEvent::ResponseSent { .. },
495+
request_response::Event::ResponseSent { .. },
499496
)) => {}
500497
SwarmEvent::NewListenAddr { address, .. } => {
501498
let local_peer_id = *self.swarm.local_peer_id();
@@ -604,18 +601,18 @@ mod network {
604601
#[derive(NetworkBehaviour)]
605602
#[behaviour(out_event = "ComposedEvent")]
606603
struct ComposedBehaviour {
607-
request_response: RequestResponse<FileExchangeCodec>,
604+
request_response: request_response::Behaviour<FileExchangeCodec>,
608605
kademlia: Kademlia<MemoryStore>,
609606
}
610607

611608
#[derive(Debug)]
612609
enum ComposedEvent {
613-
RequestResponse(RequestResponseEvent<FileRequest, FileResponse>),
610+
RequestResponse(request_response::Event<FileRequest, FileResponse>),
614611
Kademlia(KademliaEvent),
615612
}
616613

617-
impl From<RequestResponseEvent<FileRequest, FileResponse>> for ComposedEvent {
618-
fn from(event: RequestResponseEvent<FileRequest, FileResponse>) -> Self {
614+
impl From<request_response::Event<FileRequest, FileResponse>> for ComposedEvent {
615+
fn from(event: request_response::Event<FileRequest, FileResponse>) -> Self {
619616
ComposedEvent::RequestResponse(event)
620617
}
621618
}
@@ -682,7 +679,7 @@ mod network {
682679
}
683680

684681
#[async_trait]
685-
impl RequestResponseCodec for FileExchangeCodec {
682+
impl request_response::Codec for FileExchangeCodec {
686683
type Protocol = FileExchangeProtocol;
687684
type Request = FileRequest;
688685
type Response = FileResponse;

protocols/autonat/src/behaviour.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,7 @@ use libp2p_core::{
3232
connection::ConnectionId, multiaddr::Protocol, ConnectedPoint, Endpoint, Multiaddr, PeerId,
3333
};
3434
use libp2p_request_response::{
35-
ProtocolSupport, RequestId, RequestResponse, RequestResponseConfig, RequestResponseEvent,
36-
RequestResponseMessage, ResponseChannel,
35+
self as request_response, ProtocolSupport, RequestId, ResponseChannel,
3736
};
3837
use libp2p_swarm::{
3938
behaviour::{
@@ -167,7 +166,7 @@ pub struct Behaviour {
167166
local_peer_id: PeerId,
168167

169168
// Inner behaviour for sending requests and receiving the response.
170-
inner: RequestResponse<AutoNatCodec>,
169+
inner: request_response::Behaviour<AutoNatCodec>,
171170

172171
config: Config,
173172

@@ -218,9 +217,9 @@ pub struct Behaviour {
218217
impl Behaviour {
219218
pub fn new(local_peer_id: PeerId, config: Config) -> Self {
220219
let protocols = iter::once((AutoNatProtocol, ProtocolSupport::Full));
221-
let mut cfg = RequestResponseConfig::default();
220+
let mut cfg = request_response::Config::default();
222221
cfg.set_request_timeout(config.timeout);
223-
let inner = RequestResponse::new(AutoNatCodec, protocols, cfg);
222+
let inner = request_response::Behaviour::new(AutoNatCodec, protocols, cfg);
224223
Self {
225224
local_peer_id,
226225
inner,
@@ -419,7 +418,8 @@ impl Behaviour {
419418
}
420419

421420
impl NetworkBehaviour for Behaviour {
422-
type ConnectionHandler = <RequestResponse<AutoNatCodec> as NetworkBehaviour>::ConnectionHandler;
421+
type ConnectionHandler =
422+
<request_response::Behaviour<AutoNatCodec> as NetworkBehaviour>::ConnectionHandler;
423423
type OutEvent = Event;
424424

425425
fn poll(&mut self, cx: &mut Context<'_>, params: &mut impl PollParameters) -> Poll<Action> {
@@ -432,21 +432,21 @@ impl NetworkBehaviour for Behaviour {
432432
match self.inner.poll(cx, params) {
433433
Poll::Ready(NetworkBehaviourAction::GenerateEvent(event)) => {
434434
let (mut events, action) = match event {
435-
RequestResponseEvent::Message {
436-
message: RequestResponseMessage::Response { .. },
435+
request_response::Event::Message {
436+
message: request_response::Message::Response { .. },
437437
..
438438
}
439-
| RequestResponseEvent::OutboundFailure { .. } => {
439+
| request_response::Event::OutboundFailure { .. } => {
440440
self.as_client().handle_event(params, event)
441441
}
442-
RequestResponseEvent::Message {
443-
message: RequestResponseMessage::Request { .. },
442+
request_response::Event::Message {
443+
message: request_response::Message::Request { .. },
444444
..
445445
}
446-
| RequestResponseEvent::InboundFailure { .. } => {
446+
| request_response::Event::InboundFailure { .. } => {
447447
self.as_server().handle_event(params, event)
448448
}
449-
RequestResponseEvent::ResponseSent { .. } => (VecDeque::new(), None),
449+
request_response::Event::ResponseSent { .. } => (VecDeque::new(), None),
450450
};
451451
self.pending_out_events.append(&mut events);
452452
if let Some(action) = action {
@@ -542,12 +542,12 @@ type Action = NetworkBehaviourAction<
542542
<Behaviour as NetworkBehaviour>::ConnectionHandler,
543543
>;
544544

545-
// Trait implemented for `AsClient` as `AsServer` to handle events from the inner [`RequestResponse`] Protocol.
545+
// Trait implemented for `AsClient` and `AsServer` to handle events from the inner [`request_response::Behaviour`] Protocol.
546546
trait HandleInnerEvent {
547547
fn handle_event(
548548
&mut self,
549549
params: &mut impl PollParameters,
550-
event: RequestResponseEvent<DialRequest, DialResponse>,
550+
event: request_response::Event<DialRequest, DialResponse>,
551551
) -> (VecDeque<Event>, Option<Action>);
552552
}
553553

protocols/autonat/src/behaviour/as_client.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ use futures::FutureExt;
2828
use futures_timer::Delay;
2929
use instant::Instant;
3030
use libp2p_core::{connection::ConnectionId, Multiaddr, PeerId};
31-
use libp2p_request_response::{
32-
OutboundFailure, RequestId, RequestResponse, RequestResponseEvent, RequestResponseMessage,
33-
};
31+
use libp2p_request_response::{self as request_response, OutboundFailure, RequestId};
3432
use libp2p_swarm::{AddressScore, NetworkBehaviourAction, PollParameters};
3533
use rand::{seq::SliceRandom, thread_rng};
3634
use std::{
@@ -83,7 +81,7 @@ pub enum OutboundProbeEvent {
8381

8482
/// View over [`super::Behaviour`] in a client role.
8583
pub struct AsClient<'a> {
86-
pub inner: &'a mut RequestResponse<AutoNatCodec>,
84+
pub inner: &'a mut request_response::Behaviour<AutoNatCodec>,
8785
pub local_peer_id: PeerId,
8886
pub config: &'a Config,
8987
pub connected: &'a HashMap<PeerId, HashMap<ConnectionId, Option<Multiaddr>>>,
@@ -105,15 +103,15 @@ impl<'a> HandleInnerEvent for AsClient<'a> {
105103
fn handle_event(
106104
&mut self,
107105
params: &mut impl PollParameters,
108-
event: RequestResponseEvent<DialRequest, DialResponse>,
106+
event: request_response::Event<DialRequest, DialResponse>,
109107
) -> (VecDeque<Event>, Option<Action>) {
110108
let mut events = VecDeque::new();
111109
let mut action = None;
112110
match event {
113-
RequestResponseEvent::Message {
111+
request_response::Event::Message {
114112
peer,
115113
message:
116-
RequestResponseMessage::Response {
114+
request_response::Message::Response {
117115
request_id,
118116
response,
119117
},
@@ -160,7 +158,7 @@ impl<'a> HandleInnerEvent for AsClient<'a> {
160158
}
161159
}
162160
}
163-
RequestResponseEvent::OutboundFailure {
161+
request_response::Event::OutboundFailure {
164162
peer,
165163
error,
166164
request_id,

protocols/autonat/src/behaviour/as_server.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ use super::{
2525
use instant::Instant;
2626
use libp2p_core::{connection::ConnectionId, multiaddr::Protocol, Multiaddr, PeerId};
2727
use libp2p_request_response::{
28-
InboundFailure, RequestId, RequestResponse, RequestResponseEvent, RequestResponseMessage,
29-
ResponseChannel,
28+
self as request_response, InboundFailure, RequestId, ResponseChannel,
3029
};
3130
use libp2p_swarm::{
3231
dial_opts::{DialOpts, PeerCondition},
@@ -75,7 +74,7 @@ pub enum InboundProbeEvent {
7574

7675
/// View over [`super::Behaviour`] in a server role.
7776
pub struct AsServer<'a> {
78-
pub inner: &'a mut RequestResponse<AutoNatCodec>,
77+
pub inner: &'a mut request_response::Behaviour<AutoNatCodec>,
7978
pub config: &'a Config,
8079
pub connected: &'a HashMap<PeerId, HashMap<ConnectionId, Option<Multiaddr>>>,
8180
pub probe_id: &'a mut ProbeId,
@@ -98,15 +97,15 @@ impl<'a> HandleInnerEvent for AsServer<'a> {
9897
fn handle_event(
9998
&mut self,
10099
_params: &mut impl PollParameters,
101-
event: RequestResponseEvent<DialRequest, DialResponse>,
100+
event: request_response::Event<DialRequest, DialResponse>,
102101
) -> (VecDeque<Event>, Option<Action>) {
103102
let mut events = VecDeque::new();
104103
let mut action = None;
105104
match event {
106-
RequestResponseEvent::Message {
105+
request_response::Event::Message {
107106
peer,
108107
message:
109-
RequestResponseMessage::Request {
108+
request_response::Message::Request {
110109
request_id,
111110
request,
112111
channel,
@@ -161,7 +160,7 @@ impl<'a> HandleInnerEvent for AsServer<'a> {
161160
}
162161
}
163162
}
164-
RequestResponseEvent::InboundFailure {
163+
request_response::Event::InboundFailure {
165164
peer,
166165
error,
167166
request_id,

protocols/autonat/src/protocol.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use crate::structs_proto;
2222
use async_trait::async_trait;
2323
use futures::io::{AsyncRead, AsyncWrite, AsyncWriteExt};
2424
use libp2p_core::{upgrade, Multiaddr, PeerId};
25-
use libp2p_request_response::{ProtocolName, RequestResponseCodec};
25+
use libp2p_request_response::{self as request_response, ProtocolName};
2626
use prost::Message;
2727
use std::{convert::TryFrom, io};
2828

@@ -42,7 +42,7 @@ impl ProtocolName for AutoNatProtocol {
4242
pub struct AutoNatCodec;
4343

4444
#[async_trait]
45-
impl RequestResponseCodec for AutoNatCodec {
45+
impl request_response::Codec for AutoNatCodec {
4646
type Protocol = AutoNatProtocol;
4747
type Request = DialRequest;
4848
type Response = DialResponse;

protocols/request-response/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
11
# 0.24.0 [unreleased]
22

3+
- Rename types as per [discussion 2174].
4+
`RequestResponse` has been renamed to `Behaviour`.
5+
The `RequestResponse` prefix has been removed from various types like `RequestResponseEvent`.
6+
Users should prefer importing the request_response protocol as a module (`use libp2p::request_response;`),
7+
and refer to its types via `request_response::`. For example: `request_response::Behaviour` or `request_response::Event`.
8+
See [PR 3159].
9+
310
- Update to `libp2p-swarm` `v0.42.0`.
411

12+
[discussion 2174]: https://github.com/libp2p/rust-libp2p/discussions/2174
13+
[PR 3159]: https://github.com/libp2p/rust-libp2p/pull/3159
14+
515
# 0.23.0
616

717
- Update to `libp2p-core` `v0.38.0`.

0 commit comments

Comments
 (0)