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 {
|
impl wire::Decode for Filter {
|
||||||
fn decode<R: std::io::Read + ?Sized>(reader: &mut R) -> Result<Self, wire::Error> {
|
fn decode<R: std::io::Read + ?Sized>(reader: &mut R) -> Result<Self, wire::Error> {
|
||||||
let size: usize = wire::Decode::decode(reader)?;
|
let size: wire::Size = wire::Decode::decode(reader)?;
|
||||||
if size != FILTER_SIZE {
|
if size as usize != FILTER_SIZE {
|
||||||
return Err(wire::Error::InvalidFilterSize(size));
|
return Err(wire::Error::InvalidFilterSize(size as usize));
|
||||||
}
|
}
|
||||||
|
|
||||||
let bytes: [u8; FILTER_SIZE] = wire::Decode::decode(reader)?;
|
let bytes: [u8; FILTER_SIZE] = wire::Decode::decode(reader)?;
|
||||||
let bf = BloomFilter::from(Vec::from(bytes));
|
let bf = BloomFilter::from(Vec::from(bytes));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,11 @@ use crate::hash::Digest;
|
||||||
use crate::identity::Id;
|
use crate::identity::Id;
|
||||||
use crate::storage::refs::Refs;
|
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)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
#[error("i/o: {0}")]
|
#[error("i/o: {0}")]
|
||||||
|
|
@ -147,7 +152,7 @@ where
|
||||||
T: Encode,
|
T: Encode,
|
||||||
{
|
{
|
||||||
fn encode<W: io::Write + ?Sized>(&self, writer: &mut W) -> Result<usize, io::Error> {
|
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() {
|
for item in self.iter() {
|
||||||
n += item.encode(writer)?;
|
n += item.encode(writer)?;
|
||||||
|
|
@ -324,8 +329,8 @@ where
|
||||||
T: Decode,
|
T: Decode,
|
||||||
{
|
{
|
||||||
fn decode<R: io::Read + ?Sized>(reader: &mut R) -> Result<Self, Error> {
|
fn decode<R: io::Read + ?Sized>(reader: &mut R) -> Result<Self, Error> {
|
||||||
let len: usize = usize::decode(reader)?;
|
let len: Size = Size::decode(reader)?;
|
||||||
let mut vec = Vec::with_capacity(len);
|
let mut vec = Vec::with_capacity(len as usize);
|
||||||
|
|
||||||
for _ in 0..len {
|
for _ in 0..len {
|
||||||
let item = T::decode(reader)?;
|
let item = T::decode(reader)?;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue