fix(multiplexer): Use buffers that own the inner channel (#113)

This commit is contained in:
Santiago Carmuega 2022-06-10 11:54:14 -03:00 committed by GitHub
parent 07b930cbdf
commit c075f8c2ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 45 additions and 32 deletions

View file

@ -25,8 +25,8 @@ fn main() {
let bearer = Bearer::connect_tcp("relays-new.cardano-mainnet.iohk.io:3001").unwrap();
let mut plexer = StdPlexer::new(bearer);
let mut channel0 = plexer.use_channel(0);
let mut channel3 = plexer.use_channel(3);
let mut channel0 = plexer.use_channel(0).into();
let mut channel3 = plexer.use_channel(3).into();
plexer.muxer.spawn();
plexer.demuxer.spawn();

View file

@ -43,12 +43,12 @@ impl chainsync::Observer<chainsync::HeaderContent> for LoggingObserver {
}
}
fn do_handshake(mut channel: multiplexer::StdChannel) {
fn do_handshake(mut channel: multiplexer::StdChannelBuffer) {
let versions = handshake::n2c::VersionTable::v1_and_above(MAINNET_MAGIC);
let _last = run_agent(handshake::Initiator::initial(versions), &mut channel).unwrap();
}
fn do_localstate_query(mut channel: multiplexer::StdChannel) {
fn do_localstate_query(mut channel: multiplexer::StdChannelBuffer) {
let agent = run_agent(
localstate::OneShotClient::<localstate::queries::QueryV10>::initial(
None,
@ -60,7 +60,7 @@ fn do_localstate_query(mut channel: multiplexer::StdChannel) {
log::info!("state query result: {:?}", agent);
}
fn do_chainsync(mut channel: multiplexer::StdChannel) {
fn do_chainsync(mut channel: multiplexer::StdChannelBuffer) {
let known_points = vec![Point::Specific(
43847831u64,
hex::decode("15b9eeee849dd6386d3770b0745e0450190f7560e5159b1b3ab13b14b2684a45").unwrap(),
@ -89,9 +89,9 @@ fn main() {
// setup the multiplexer by specifying the bearer and the IDs of the
// miniprotocols to use
let mut plexer = multiplexer::StdPlexer::new(bearer);
let channel0 = plexer.use_channel(0);
let channel7 = plexer.use_channel(7);
let channel5 = plexer.use_channel(5);
let channel0 = plexer.use_channel(0).into();
let channel7 = plexer.use_channel(7).into();
let channel5 = plexer.use_channel(5).into();
plexer.muxer.spawn();
plexer.demuxer.spawn();

View file

@ -1,6 +1,6 @@
use pallas::network::{
miniprotocols::{blockfetch, chainsync, handshake, run_agent, Point, MAINNET_MAGIC},
multiplexer::{bearers::Bearer, StdChannel, StdPlexer},
multiplexer::{agents::ChannelBuffer, bearers::Bearer, StdChannel, StdPlexer},
};
#[derive(Debug)]
@ -50,12 +50,12 @@ impl chainsync::Observer<chainsync::HeaderContent> for LoggingObserver {
}
}
fn do_handshake(mut channel: StdChannel) {
fn do_handshake(mut channel: ChannelBuffer<StdChannel>) {
let versions = handshake::n2n::VersionTable::v4_and_above(MAINNET_MAGIC);
let _last = run_agent(handshake::Initiator::initial(versions), &mut channel).unwrap();
}
fn do_blockfetch(mut channel: StdChannel) {
fn do_blockfetch(mut channel: ChannelBuffer<StdChannel>) {
let range = (
Point::Specific(
43847831,
@ -77,7 +77,7 @@ fn do_blockfetch(mut channel: StdChannel) {
println!("{:?}", agent);
}
fn do_chainsync(mut channel: StdChannel) {
fn do_chainsync(mut channel: ChannelBuffer<StdChannel>) {
let known_points = vec![Point::Specific(
43847831u64,
hex::decode("15b9eeee849dd6386d3770b0745e0450190f7560e5159b1b3ab13b14b2684a45").unwrap(),
@ -106,9 +106,9 @@ fn main() {
// setup the multiplexer by specifying the bearer and the IDs of the
// miniprotocols to use
let mut plexer = StdPlexer::new(bearer);
let channel0 = plexer.use_channel(0);
let channel3 = plexer.use_channel(3);
let channel2 = plexer.use_channel(2);
let channel0 = plexer.use_channel(0).into();
let channel3 = plexer.use_channel(3).into();
let channel2 = plexer.use_channel(2).into();
plexer.muxer.spawn();
plexer.demuxer.spawn();