refactor(network): split bearer into read/write (#364)
This commit is contained in:
parent
2e1b0e5cf2
commit
8c6d5e5e58
8 changed files with 666 additions and 492 deletions
|
|
@ -1,6 +1,6 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use pallas_codec::minicbor::{decode, Decode, Decoder, encode, Encode, Encoder};
|
||||
use pallas_codec::minicbor::{decode, encode, Decode, Decoder, Encode, Encoder};
|
||||
|
||||
pub type VersionTable = super::protocol::VersionTable<VersionData>;
|
||||
|
||||
|
|
@ -15,24 +15,38 @@ const PROTOCOL_V13: u64 = 13;
|
|||
const PEER_SHARING_DISABLED: u8 = 0;
|
||||
|
||||
impl VersionTable {
|
||||
#[deprecated(note = "no longer supported by spec")]
|
||||
pub fn v4_and_above(network_magic: u64) -> VersionTable {
|
||||
// Older versions are not supported anymore (removed from network-spec.pdf).
|
||||
// Try not to break compatibility with older pallas users.
|
||||
return Self::v7_and_above(network_magic);
|
||||
Self::v7_and_above(network_magic)
|
||||
}
|
||||
|
||||
#[deprecated(note = "no longer supported by spec")]
|
||||
pub fn v6_and_above(network_magic: u64) -> VersionTable {
|
||||
// Older versions are not supported anymore (removed from network-spec.pdf).
|
||||
// Try not to break compatibility with older pallas users.
|
||||
return Self::v7_and_above(network_magic);
|
||||
Self::v7_and_above(network_magic)
|
||||
}
|
||||
|
||||
pub fn v7_to_v10(network_magic: u64) -> VersionTable {
|
||||
let values = vec![
|
||||
(PROTOCOL_V7, VersionData::new(network_magic, false, None, None)),
|
||||
(PROTOCOL_V8, VersionData::new(network_magic, false, None, None)),
|
||||
(PROTOCOL_V9, VersionData::new(network_magic, false, None, None)),
|
||||
(PROTOCOL_V10, VersionData::new(network_magic, false, None, None)),
|
||||
(
|
||||
PROTOCOL_V7,
|
||||
VersionData::new(network_magic, false, None, None),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V8,
|
||||
VersionData::new(network_magic, false, None, None),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V9,
|
||||
VersionData::new(network_magic, false, None, None),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V10,
|
||||
VersionData::new(network_magic, false, None, None),
|
||||
),
|
||||
]
|
||||
.into_iter()
|
||||
.collect::<HashMap<u64, VersionData>>();
|
||||
|
|
@ -42,13 +56,49 @@ impl VersionTable {
|
|||
|
||||
pub fn v7_and_above(network_magic: u64) -> VersionTable {
|
||||
let values = vec![
|
||||
(PROTOCOL_V7, VersionData::new(network_magic, false, None, None)),
|
||||
(PROTOCOL_V8, VersionData::new(network_magic, false, None, None)),
|
||||
(PROTOCOL_V9, VersionData::new(network_magic, false, None, None)),
|
||||
(PROTOCOL_V10, VersionData::new(network_magic, false, None, None)),
|
||||
(PROTOCOL_V11, VersionData::new(network_magic, false, Some(PEER_SHARING_DISABLED), Some(false))),
|
||||
(PROTOCOL_V12, VersionData::new(network_magic, false, Some(PEER_SHARING_DISABLED), Some(false))),
|
||||
(PROTOCOL_V13, VersionData::new(network_magic, false, Some(PEER_SHARING_DISABLED), Some(false))),
|
||||
(
|
||||
PROTOCOL_V7,
|
||||
VersionData::new(network_magic, false, None, None),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V8,
|
||||
VersionData::new(network_magic, false, None, None),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V9,
|
||||
VersionData::new(network_magic, false, None, None),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V10,
|
||||
VersionData::new(network_magic, false, None, None),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V11,
|
||||
VersionData::new(
|
||||
network_magic,
|
||||
false,
|
||||
Some(PEER_SHARING_DISABLED),
|
||||
Some(false),
|
||||
),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V12,
|
||||
VersionData::new(
|
||||
network_magic,
|
||||
false,
|
||||
Some(PEER_SHARING_DISABLED),
|
||||
Some(false),
|
||||
),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V13,
|
||||
VersionData::new(
|
||||
network_magic,
|
||||
false,
|
||||
Some(PEER_SHARING_DISABLED),
|
||||
Some(false),
|
||||
),
|
||||
),
|
||||
]
|
||||
.into_iter()
|
||||
.collect::<HashMap<u64, VersionData>>();
|
||||
|
|
@ -58,9 +108,33 @@ impl VersionTable {
|
|||
|
||||
pub fn v11_and_above(network_magic: u64) -> VersionTable {
|
||||
let values = vec![
|
||||
(PROTOCOL_V11, VersionData::new(network_magic, false, Some(PEER_SHARING_DISABLED), Some(false))),
|
||||
(PROTOCOL_V12, VersionData::new(network_magic, false, Some(PEER_SHARING_DISABLED), Some(false))),
|
||||
(PROTOCOL_V13, VersionData::new(network_magic, false, Some(PEER_SHARING_DISABLED), Some(false))),
|
||||
(
|
||||
PROTOCOL_V11,
|
||||
VersionData::new(
|
||||
network_magic,
|
||||
false,
|
||||
Some(PEER_SHARING_DISABLED),
|
||||
Some(false),
|
||||
),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V12,
|
||||
VersionData::new(
|
||||
network_magic,
|
||||
false,
|
||||
Some(PEER_SHARING_DISABLED),
|
||||
Some(false),
|
||||
),
|
||||
),
|
||||
(
|
||||
PROTOCOL_V13,
|
||||
VersionData::new(
|
||||
network_magic,
|
||||
false,
|
||||
Some(PEER_SHARING_DISABLED),
|
||||
Some(false),
|
||||
),
|
||||
),
|
||||
]
|
||||
.into_iter()
|
||||
.collect::<HashMap<u64, VersionData>>();
|
||||
|
|
@ -78,7 +152,12 @@ pub struct VersionData {
|
|||
}
|
||||
|
||||
impl VersionData {
|
||||
pub fn new(network_magic: u64, initiator_and_responder_diffusion_mode: bool, peer_sharing: Option<u8>, query: Option<bool>) -> Self {
|
||||
pub fn new(
|
||||
network_magic: u64,
|
||||
initiator_and_responder_diffusion_mode: bool,
|
||||
peer_sharing: Option<u8>,
|
||||
query: Option<bool>,
|
||||
) -> Self {
|
||||
VersionData {
|
||||
network_magic,
|
||||
initiator_and_responder_diffusion_mode,
|
||||
|
|
@ -101,12 +180,12 @@ impl Encode<()> for VersionData {
|
|||
.bool(self.initiator_and_responder_diffusion_mode)?
|
||||
.u8(peer_sharing)?
|
||||
.bool(query)?;
|
||||
},
|
||||
}
|
||||
_ => {
|
||||
e.array(2)?
|
||||
.u64(self.network_magic)?
|
||||
.bool(self.initiator_and_responder_diffusion_mode)?;
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
Ok(())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue