node: User smaller type to represent wire sizes
Signed-off-by: Alexis Sellier <alexis@radicle.xyz>
This commit is contained in:
parent
79c89a239a
commit
381080a5a5
|
|
@ -70,11 +70,10 @@ impl wire::Encode for Filter {
|
|||
|
||||
impl wire::Decode for Filter {
|
||||
fn decode<R: std::io::Read + ?Sized>(reader: &mut R) -> Result<Self, wire::Error> {
|
||||
let size: usize = wire::Decode::decode(reader)?;
|
||||
if size != FILTER_SIZE {
|
||||
return Err(wire::Error::InvalidFilterSize(size));
|
||||
let size: wire::Size = wire::Decode::decode(reader)?;
|
||||
if size as usize != FILTER_SIZE {
|
||||
return Err(wire::Error::InvalidFilterSize(size as usize));
|
||||
}
|
||||
|
||||
let bytes: [u8; FILTER_SIZE] = wire::Decode::decode(reader)?;
|
||||
let bf = BloomFilter::from(Vec::from(bytes));
|
||||
|
||||
|
|
|
|||
|
|
@ -13,6 +13,11 @@ use crate::hash::Digest;
|
|||
use crate::identity::Id;
|
||||
use crate::storage::refs::Refs;
|
||||
|
||||
/// The default type we use to represent sizes.
|
||||
/// Four bytes is more than enough for anything sent over the wire.
|
||||
/// Note that in certain cases, we may use only one or two byte types.
|
||||
pub type Size = u32;
|
||||
|
||||
#[derive(thiserror::Error, Debug)]
|
||||
pub enum Error {
|
||||
#[error("i/o: {0}")]
|
||||
|
|
@ -147,7 +152,7 @@ where
|
|||
T: Encode,
|
||||
{
|
||||
fn encode<W: io::Write + ?Sized>(&self, writer: &mut W) -> Result<usize, io::Error> {
|
||||
let mut n = self.len().encode(writer)?;
|
||||
let mut n = (self.len() as Size).encode(writer)?;
|
||||
|
||||
for item in self.iter() {
|
||||
n += item.encode(writer)?;
|
||||
|
|
@ -324,8 +329,8 @@ where
|
|||
T: Decode,
|
||||
{
|
||||
fn decode<R: io::Read + ?Sized>(reader: &mut R) -> Result<Self, Error> {
|
||||
let len: usize = usize::decode(reader)?;
|
||||
let mut vec = Vec::with_capacity(len);
|
||||
let len: Size = Size::decode(reader)?;
|
||||
let mut vec = Vec::with_capacity(len as usize);
|
||||
|
||||
for _ in 0..len {
|
||||
let item = T::decode(reader)?;
|
||||
|
|
|
|||
Loading…
Reference in New Issue