Clean out some occurances of SszStream

This commit is contained in:
Paul Hauner 2019-05-06 19:50:05 +10:00
parent 5550d14d62
commit 759d0250c5
No known key found for this signature in database
GPG Key ID: 303E4494BB28068C
11 changed files with 39 additions and 22 deletions

View File

@ -13,7 +13,7 @@ use libp2p::{
NetworkBehaviour, PeerId, NetworkBehaviour, PeerId,
}; };
use slog::{debug, o, trace, warn}; use slog::{debug, o, trace, warn};
use ssz::{ssz_encode, Decodable, DecodeError, Encodable, SszStream}; use ssz::{ssz_encode, Decodable, DecodeError, Encodable};
use types::{Attestation, BeaconBlock}; use types::{Attestation, BeaconBlock};
use types::{Topic, TopicHash}; use types::{Topic, TopicHash};

View File

@ -1,4 +1,4 @@
use ssz::{Decodable, DecodeError, Encodable, SszStream}; use ssz::{Decodable, DecodeError, Encodable};
/// Available RPC methods types and ids. /// Available RPC methods types and ids.
use ssz_derive::{Decode, Encode}; use ssz_derive::{Decode, Encode};
use types::{BeaconBlockBody, BeaconBlockHeader, Epoch, Hash256, Slot}; use types::{BeaconBlockBody, BeaconBlockHeader, Epoch, Hash256, Slot};

View File

@ -1,6 +1,6 @@
use super::methods::*; use super::methods::*;
use libp2p::core::{upgrade, InboundUpgrade, OutboundUpgrade, UpgradeInfo}; use libp2p::core::{upgrade, InboundUpgrade, OutboundUpgrade, UpgradeInfo};
use ssz::{ssz_encode, Decodable, DecodeError as SSZDecodeError, Encodable, SszStream}; use ssz::{ssz_encode, Decodable, DecodeError as SSZDecodeError, Encodable};
use std::hash::{Hash, Hasher}; use std::hash::{Hash, Hasher};
use std::io; use std::io;
use std::iter; use std::iter;

View File

@ -2,11 +2,12 @@ use self::epoch_cache::{get_active_validator_indices, EpochCache, Error as Epoch
use crate::test_utils::TestRandom; use crate::test_utils::TestRandom;
use crate::*; use crate::*;
use cached_tree_hash::{Error as TreeHashCacheError, TreeHashCache}; use cached_tree_hash::{Error as TreeHashCacheError, TreeHashCache};
use hashing::hash;
use int_to_bytes::int_to_bytes32; use int_to_bytes::int_to_bytes32;
use pubkey_cache::PubkeyCache; use pubkey_cache::PubkeyCache;
use rand::RngCore; use rand::RngCore;
use serde_derive::{Deserialize, Serialize}; use serde_derive::{Deserialize, Serialize};
use ssz::{hash, ssz_encode}; use ssz::ssz_encode;
use ssz_derive::{Decode, Encode}; use ssz_derive::{Decode, Encode};
use test_random_derive::TestRandom; use test_random_derive::TestRandom;
use tree_hash::TreeHash; use tree_hash::TreeHash;

View File

@ -14,7 +14,7 @@ use crate::test_utils::TestRandom;
use rand::RngCore; use rand::RngCore;
use serde_derive::{Deserialize, Serialize}; use serde_derive::{Deserialize, Serialize};
use slog; use slog;
use ssz::{ssz_encode, Decodable, DecodeError, Encodable, SszStream}; use ssz::{ssz_encode, Decodable, DecodeError, Encodable};
use std::cmp::{Ord, Ordering}; use std::cmp::{Ord, Ordering};
use std::fmt; use std::fmt;
use std::hash::{Hash, Hasher}; use std::hash::{Hash, Hasher};
@ -144,11 +144,13 @@ mod epoch_tests {
#[test] #[test]
fn max_epoch_ssz() { fn max_epoch_ssz() {
let max_epoch = Epoch::max_value(); let max_epoch = Epoch::max_value();
let mut ssz = SszStream::new(); assert_eq!(
ssz.append(&max_epoch); &max_epoch.as_ssz_bytes(),
let encoded = ssz.drain(); &[255, 255, 255, 255, 255, 255, 255, 255]
assert_eq!(&encoded, &[255, 255, 255, 255, 255, 255, 255, 255]); );
let (decoded, _i): (Epoch, usize) = <_>::ssz_decode(&encoded, 0).unwrap(); assert_eq!(
assert_eq!(max_epoch, decoded); max_epoch,
Epoch::from_ssz_bytes(&max_epoch.as_ssz_bytes()).unwrap()
);
} }
} }

View File

@ -193,16 +193,30 @@ macro_rules! impl_display {
macro_rules! impl_ssz { macro_rules! impl_ssz {
($type: ident) => { ($type: ident) => {
impl Encodable for $type { impl Encodable for $type {
fn ssz_append(&self, s: &mut SszStream) { fn is_ssz_fixed_len() -> bool {
s.append(&self.0); <u64 as Encodable>::is_ssz_fixed_len()
}
fn ssz_fixed_len() -> usize {
<u64 as Encodable>::ssz_fixed_len()
}
fn ssz_append(&self, buf: &mut Vec<u8>) {
self.0.ssz_append(buf)
} }
} }
impl Decodable for $type { impl Decodable for $type {
fn ssz_decode(bytes: &[u8], i: usize) -> Result<(Self, usize), DecodeError> { fn is_ssz_fixed_len() -> bool {
let (value, i) = <_>::ssz_decode(bytes, i)?; <u64 as Decodable>::is_ssz_fixed_len()
}
Ok(($type(value), i)) fn ssz_fixed_len() -> usize {
<u64 as Decodable>::ssz_fixed_len()
}
fn from_ssz_bytes(bytes: &[u8]) -> Result<Self, DecodeError> {
Ok($type(u64::from_ssz_bytes(bytes)?))
} }
} }

View File

@ -2,7 +2,7 @@ use crate::slot_epoch::{Epoch, Slot};
use crate::test_utils::TestRandom; use crate::test_utils::TestRandom;
use rand::RngCore; use rand::RngCore;
use serde_derive::Serialize; use serde_derive::Serialize;
use ssz::{ssz_encode, Decodable, DecodeError, Encodable, SszStream}; use ssz::{ssz_encode, Decodable, DecodeError, Encodable};
use std::cmp::{Ord, Ordering}; use std::cmp::{Ord, Ordering};
use std::fmt; use std::fmt;
use std::hash::{Hash, Hasher}; use std::hash::{Hash, Hasher};

View File

@ -1,7 +1,7 @@
use crate::test_utils::{RngCore, TestRandom}; use crate::test_utils::{RngCore, TestRandom};
use cached_tree_hash::CachedTreeHash; use cached_tree_hash::CachedTreeHash;
use serde_derive::{Deserialize, Serialize}; use serde_derive::{Deserialize, Serialize};
use ssz::{Decodable, DecodeError, Encodable, SszStream}; use ssz::{Decodable, DecodeError, Encodable};
use std::ops::{Deref, DerefMut}; use std::ops::{Deref, DerefMut};
use tree_hash::TreeHash; use tree_hash::TreeHash;

View File

@ -3,7 +3,7 @@ use cached_tree_hash::cached_tree_hash_ssz_encoding_as_vector;
use serde::de::{Deserialize, Deserializer}; use serde::de::{Deserialize, Deserializer};
use serde::ser::{Serialize, Serializer}; use serde::ser::{Serialize, Serializer};
use serde_hex::{encode as hex_encode, PrefixedHexVisitor}; use serde_hex::{encode as hex_encode, PrefixedHexVisitor};
use ssz::{ssz_encode, Decodable, DecodeError, Encodable, SszStream}; use ssz::{ssz_encode, Decodable, DecodeError, Encodable};
use tree_hash::tree_hash_ssz_encoding_as_vector; use tree_hash::tree_hash_ssz_encoding_as_vector;
/// A BLS aggregate signature. /// A BLS aggregate signature.

View File

@ -4,7 +4,7 @@ use hex::encode as hex_encode;
use serde::de::{Deserialize, Deserializer}; use serde::de::{Deserialize, Deserializer};
use serde::ser::{Serialize, Serializer}; use serde::ser::{Serialize, Serializer};
use serde_hex::HexVisitor; use serde_hex::HexVisitor;
use ssz::{ssz_encode, Decodable, DecodeError, Encodable, SszStream}; use ssz::{ssz_encode, Decodable, DecodeError, Encodable};
use tree_hash::tree_hash_ssz_encoding_as_vector; use tree_hash::tree_hash_ssz_encoding_as_vector;
/// A single BLS signature. /// A single BLS signature.

View File

@ -93,7 +93,7 @@ pub fn ssz_encode_derive(input: TokenStream) -> TokenStream {
} }
fn ssz_fixed_len() -> usize { fn ssz_fixed_len() -> usize {
if <Self as Encodable>::is_ssz_fixed_len() { if <Self as ssz::Encodable>::is_ssz_fixed_len() {
#( #(
<#field_types_b as ssz::Encodable>::ssz_fixed_len() + <#field_types_b as ssz::Encodable>::ssz_fixed_len() +
)* )*
@ -161,7 +161,7 @@ pub fn ssz_decode_derive(input: TokenStream) -> TokenStream {
if should_skip_deserializing(field) { if should_skip_deserializing(field) {
// Field should not be deserialized; use a `Default` impl to instantiate. // Field should not be deserialized; use a `Default` impl to instantiate.
decodes.push(quote! { decodes.push(quote! {
#ident: <_>::default(), #ident: <_>::default()
}); });
} else { } else {
let ty = &field.ty; let ty = &field.ty;