feat(multiplexer): Allow fine-grained control of concurrency strategy (#106)

This commit is contained in:
Santiago Carmuega 2022-06-03 21:37:38 -03:00 committed by GitHub
parent 07fb2ca016
commit e4784f444d
23 changed files with 822 additions and 559 deletions

View file

@ -5,7 +5,7 @@ use pallas::network::{
handshake::{n2n::VersionTable, Initiator},
run_agent, Point, MAINNET_MAGIC,
},
multiplexer::Multiplexer,
multiplexer::{spawn_demuxer, spawn_muxer, use_channel, StdPlexer},
};
use pallas::network::miniprotocols::blockfetch::{BatchClient, Observer};
@ -30,11 +30,15 @@ fn main() {
bearer.set_nodelay(true).unwrap();
bearer.set_keepalive_ms(Some(30_000u32)).unwrap();
let mut muxer = Multiplexer::setup(bearer, &[0, 3]).unwrap();
let mut plexer = StdPlexer::new(bearer);
let mut channel0 = use_channel(&mut plexer, 0);
let mut channel3 = use_channel(&mut plexer, 3);
spawn_muxer(plexer.muxer);
spawn_demuxer(plexer.demuxer);
let mut hs_channel = muxer.use_channel(0);
let versions = VersionTable::v4_and_above(MAINNET_MAGIC);
let _last = run_agent(Initiator::initial(versions), &mut hs_channel).unwrap();
let _last = run_agent(Initiator::initial(versions), &mut channel0).unwrap();
let range = (
Point::Specific(
@ -49,8 +53,7 @@ fn main() {
),
);
let mut bf_channel = muxer.use_channel(3);
let bf = BatchClient::initial(range, BlockPrinter {});
let bf_last = run_agent(bf, &mut bf_channel);
let bf_last = run_agent(bf, &mut channel3);
println!("{:?}", bf_last);
}