Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
b448b6d
Patch libp2p
kpp May 24, 2022
bb7abd9
Build QUIC transport
kpp May 24, 2022
450d260
Pass quic_port through cli args
kpp May 24, 2022
f052690
Build quic transport from cli args
kpp May 24, 2022
4d61feb
Review fixes: ipv6 :: addr
kpp May 26, 2022
5504f4c
Merge branch 'master' into kpp-quic
kpp Jul 12, 2022
f661801
Upgrade libp2p to 0.47.0
kpp Jul 12, 2022
0b56dc1
Merge branch 'master' into kpp-quic
kpp Jul 18, 2022
81bdbdf
upgrade libp2p to 0.50.0
melekes Nov 18, 2022
21cf90c
on_swarm_event and on_connection_handler_event
melekes Nov 21, 2022
8a227e4
replace `Swarm::new` with `Swarm::with_threadpool_executor`
melekes Nov 21, 2022
8a97a52
on_swarm_event and on_connection_handler_event part 2
melekes Nov 21, 2022
e9b731b
on_swarm_event and on_connection_handler_event part 3
melekes Nov 21, 2022
d27d73a
on_swarm_event and on_connection_handler_event part 4
melekes Nov 21, 2022
672cac2
update libp2p
melekes Nov 21, 2022
41ab633
Merge branch 'master' into anton/upgrade-libp2p-to-0.50.0
melekes Nov 28, 2022
2fa1b2b
libp2p 0.50.0
melekes Nov 28, 2022
b3c33b5
rename OutboundQueryCompleted to OutboundQueryProgressed
melekes Nov 28, 2022
20437d7
remove unused var
melekes Nov 28, 2022
dbb7bec
accumulate outbound_query_records until query is finished
melekes Nov 28, 2022
bc53171
Merge branch 'anton/upgrade-libp2p-to-0.50.0' into kpp-quic
kpp Nov 29, 2022
458c7aa
Use --experimental-quic flag for cli
kpp Nov 29, 2022
46c473e
Merge branch 'master' into kpp-quic
kpp Jan 31, 2023
1360b83
Review fixes
kpp Jan 31, 2023
fcc4b51
Update client/network/src/transport.rs
kpp Apr 25, 2023
62ff75e
Merge branch 'master' into kpp-quic
kpp Jun 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
on_swarm_event and on_connection_handler_event part 2
  • Loading branch information
melekes committed Nov 21, 2022
commit 8a97a52712e300b13efdeadd58968e02ffb07946
1 change: 0 additions & 1 deletion client/network/src/peer_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ use sc_network_common::utils::interval;
use smallvec::SmallVec;
use std::{
collections::hash_map::Entry,
error, io,
pin::Pin,
task::{Context, Poll},
time::{Duration, Instant},
Expand Down
201 changes: 96 additions & 105 deletions client/network/src/request_responses.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,16 @@ use futures::{
prelude::*,
};
use libp2p::{
core::{connection::ConnectionId, transport::ListenerId, ConnectedPoint, Multiaddr, PeerId},
core::{connection::ConnectionId, Multiaddr, PeerId},
request_response::{
handler::RequestResponseHandler, ProtocolSupport, RequestResponse, RequestResponseCodec,
RequestResponseConfig, RequestResponseEvent, RequestResponseMessage, ResponseChannel,
},
swarm::{
handler::multi::MultiHandler, ConnectionHandler, IntoConnectionHandler, NetworkBehaviour,
NetworkBehaviourAction, PollParameters,
behaviour::{ConnectionClosed, DialFailure, FromSwarm, ListenFailure},
handler::multi::MultiHandler,
ConnectionHandler, IntoConnectionHandler, NetworkBehaviour, NetworkBehaviourAction,
PollParameters,
},
};
use sc_network_common::{
Expand Down Expand Up @@ -312,120 +314,109 @@ impl NetworkBehaviour for RequestResponsesBehaviour {
Vec::new()
}

fn inject_connection_established(
&mut self,
peer_id: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint,
failed_addresses: Option<&Vec<Multiaddr>>,
other_established: usize,
) {
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::inject_connection_established(
p,
fn on_swarm_event(&mut self, event: FromSwarm<Self::ConnectionHandler>) {
match event {
FromSwarm::ConnectionEstablished(e) =>
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::on_swarm_event(p, FromSwarm::ConnectionEstablished(e));
},
FromSwarm::ConnectionClosed(ConnectionClosed {
peer_id,
conn,
connection_id,
endpoint,
failed_addresses,
other_established,
)
}
}

fn inject_connection_closed(
&mut self,
peer_id: &PeerId,
conn: &ConnectionId,
endpoint: &ConnectedPoint,
handler: <Self::ConnectionHandler as IntoConnectionHandler>::Handler,
remaining_established: usize,
) {
for (p_name, event) in handler.into_iter() {
if let Some((proto, _)) = self.protocols.get_mut(p_name.as_str()) {
proto.inject_connection_closed(
peer_id,
conn,
endpoint,
event,
remaining_established,
)
} else {
log::error!(
target: "sub-libp2p",
"inject_connection_closed: no request-response instance registered for protocol {:?}",
p_name,
)
}
handler,
remaining_established,
}) =>
for (p_name, p_handler) in handler.into_iter() {
if let Some((proto, _)) = self.protocols.get_mut(p_name.as_str()) {
proto.on_swarm_event(FromSwarm::ConnectionClosed(ConnectionClosed {
peer_id,
connection_id,
endpoint,
handler: p_handler,
remaining_established,
}));
} else {
log::error!(
target: "sub-libp2p",
"on_swarm_event/connection_closed: no request-response instance registered for protocol {:?}",
p_name,
)
}
},
FromSwarm::DialFailure(DialFailure { peer_id, error, .. }) =>
for (p, _) in self.protocols.values_mut() {
let handler = p.new_handler();
NetworkBehaviour::on_swarm_event(
p,
FromSwarm::DialFailure(DialFailure { peer_id, handler, error }),
);
},
FromSwarm::ListenerClosed(e) =>
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::on_swarm_event(p, FromSwarm::ListenerClosed(e));
},
FromSwarm::ListenFailure(ListenFailure { local_addr, send_back_addr, handler }) =>
for (p_name, p_handler) in handler.into_iter() {
if let Some((proto, _)) = self.protocols.get_mut(p_name.as_str()) {
proto.on_swarm_event(FromSwarm::ListenFailure(ListenFailure {
local_addr,
send_back_addr,
handler: p_handler,
}));
} else {
log::error!(
target: "sub-libp2p",
"on_swarm_event/listen_failure: no request-response instance registered for protocol {:?}",
p_name,
)
}
},
FromSwarm::ListenerError(e) =>
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::on_swarm_event(p, FromSwarm::ListenerError(e));
},
FromSwarm::ExpiredExternalAddr(e) =>
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::on_swarm_event(p, FromSwarm::ExpiredExternalAddr(e));
},
FromSwarm::NewListener(e) =>
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::on_swarm_event(p, FromSwarm::NewListener(e));
},
FromSwarm::ExpiredListenAddr(e) =>
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::on_swarm_event(p, FromSwarm::ExpiredListenAddr(e));
},
FromSwarm::NewExternalAddr(e) =>
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::on_swarm_event(p, FromSwarm::NewExternalAddr(e));
},
FromSwarm::AddressChange(e) =>
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::on_swarm_event(p, FromSwarm::AddressChange(e));
},
FromSwarm::NewListenAddr(e) =>
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::on_swarm_event(p, FromSwarm::NewListenAddr(e));
},
}
}

fn inject_event(
fn on_connection_handler_event(
&mut self,
peer_id: PeerId,
connection: ConnectionId,
(p_name, event): <Self::ConnectionHandler as ConnectionHandler>::OutEvent,
connection_id: ConnectionId,
(p_name, event): <<Self::ConnectionHandler as IntoConnectionHandler>::Handler as
ConnectionHandler>::OutEvent,
) {
if let Some((proto, _)) = self.protocols.get_mut(&*p_name) {
return proto.inject_event(peer_id, connection, event)
return proto.on_connection_handler_event(peer_id, connection_id, event)
}

log::warn!(target: "sub-libp2p",
"inject_node_event: no request-response instance registered for protocol {:?}",
p_name)
}

fn inject_new_external_addr(&mut self, addr: &Multiaddr) {
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::inject_new_external_addr(p, addr)
}
}

fn inject_expired_external_addr(&mut self, addr: &Multiaddr) {
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::inject_expired_external_addr(p, addr)
}
}

fn inject_expired_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) {
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::inject_expired_listen_addr(p, id, addr)
}
}

fn inject_dial_failure(
&mut self,
peer_id: Option<PeerId>,
_: Self::ConnectionHandler,
error: &libp2p::swarm::DialError,
) {
for (p, _) in self.protocols.values_mut() {
let handler = p.new_handler();
NetworkBehaviour::inject_dial_failure(p, peer_id, handler, error)
}
}

fn inject_new_listener(&mut self, id: ListenerId) {
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::inject_new_listener(p, id)
}
}

fn inject_new_listen_addr(&mut self, id: ListenerId, addr: &Multiaddr) {
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::inject_new_listen_addr(p, id, addr)
}
}

fn inject_listener_error(&mut self, id: ListenerId, err: &(dyn std::error::Error + 'static)) {
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::inject_listener_error(p, id, err)
}
}

fn inject_listener_closed(&mut self, id: ListenerId, reason: Result<(), &io::Error>) {
for (p, _) in self.protocols.values_mut() {
NetworkBehaviour::inject_listener_closed(p, id, reason)
}
"on_connection_handler_event: no request-response instance registered for protocol {:?}",
p_name)
}

fn poll(
Expand Down
2 changes: 1 addition & 1 deletion client/network/src/transport.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ pub fn build_transport(
) -> (Boxed<(PeerId, StreamMuxerBox)>, Arc<BandwidthSinks>) {
// Build the base layer of the transport.
let transport = if !memory_only {
let tcp_config = tcp::GenTcpConfig::new().nodelay(true);
let tcp_config = tcp::Config::new().nodelay(true);
let desktop_trans = tcp::async_io::Transport::new(tcp_config.clone());
let desktop_trans = websocket::WsConfig::new(desktop_trans)
.or_transport(tcp::async_io::Transport::new(tcp_config.clone()));
Expand Down