Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serialization refactor step 1 #255

Merged
merged 7 commits into from
May 9, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
# Pending
## Pending

- [#249] Updated abci_info test to 0.17.0
Testing:
- Updated abci_info test to 0.17.0 ([#249](https://github.com/informalsystems/tendermint-rs/issues/249))

Serialization:
- Refactor serializers library to use modules and give a nicer annotation to structs. ([#248](https://github.com/informalsystems/tendermint-rs/issues/248))

## [0.13.0] (2020-04-20)

Expand Down
12 changes: 2 additions & 10 deletions tendermint/src/abci/proof.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,10 @@ pub struct ProofOp {
#[serde(alias = "type")]
pub field_type: String,
/// Key of the ProofOp
#[serde(
default,
serialize_with = "serializers::serialize_base64",
deserialize_with = "serializers::parse_base64"
)]
#[serde(default, with = "serializers::bytes::base64string")]
pub key: Vec<u8>,
/// Actual data
#[serde(
default,
serialize_with = "serializers::serialize_base64",
deserialize_with = "serializers::parse_base64"
)]
#[serde(default, with = "serializers::bytes::base64string")]
pub data: Vec<u8>,
}

Expand Down
5 changes: 1 addition & 4 deletions tendermint/src/block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,7 @@ where
#[derive(Deserialize)]
struct TmpCommit {
pub height: Height,
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub round: u64,
#[serde(deserialize_with = "serializers::parse_non_empty_block_id")]
pub block_id: Option<Id>,
Expand Down
5 changes: 1 addition & 4 deletions tendermint/src/block/commit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@ pub struct Commit {
pub height: Height,

/// Round
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub round: u64,

/// Block ID
Expand Down
15 changes: 3 additions & 12 deletions tendermint/src/block/header.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,7 @@ pub struct Header {
pub consensus_hash: Hash,

/// State after txs from the previous block
#[serde(
serialize_with = "serializers::serialize_hex",
deserialize_with = "serializers::parse_hex"
)]
#[serde(with = "serializers::bytes::hexstring")]
pub app_hash: Vec<u8>,

/// Root hash of all results from the txs from the previous block
Expand All @@ -70,17 +67,11 @@ pub struct Header {
#[derive(Serialize, Deserialize, Clone, PartialEq, Debug)]
pub struct Version {
/// Block version
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub block: u64,

/// App version
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub app: u64,
}

Expand Down
5 changes: 1 addition & 4 deletions tendermint/src/block/parts.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@ use {
#[derive(Serialize, Deserialize, Clone, Debug, Hash, Eq, PartialEq, PartialOrd, Ord)]
pub struct Header {
/// Number of parts in this block
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub total: u64,

/// Hash of the parts set header,
Expand Down
10 changes: 2 additions & 8 deletions tendermint/src/block/size.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,10 @@ use {
#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)]
pub struct Size {
/// Maximum number of bytes in a block
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub max_bytes: u64,

/// Maximum amount of gas which can be spent on a block
#[serde(
serialize_with = "serializers::serialize_i64",
deserialize_with = "serializers::parse_i64"
)]
#[serde(with = "serializers::from_str")]
pub max_gas: i64,
}
24 changes: 4 additions & 20 deletions tendermint/src/channel.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,35 +15,19 @@ pub struct Channel {
pub id: Id,

/// Capacity of the send queue
#[serde(
rename = "SendQueueCapacity",
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(rename = "SendQueueCapacity", with = "serializers::from_str")]
pub send_queue_capacity: u64,

/// Size of the send queue
#[serde(
rename = "SendQueueSize",
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(rename = "SendQueueSize", with = "serializers::from_str")]
pub send_queue_size: u64,

/// Priority value
#[serde(
rename = "Priority",
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(rename = "Priority", with = "serializers::from_str")]
pub priority: u64,

/// Amount of data recently sent
#[serde(
rename = "RecentlySent",
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(rename = "RecentlySent", with = "serializers::from_str")]
pub recently_sent: u64,
}

Expand Down
5 changes: 1 addition & 4 deletions tendermint/src/consensus/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,7 @@ pub struct State {
pub height: block::Height,

/// Current consensus round
#[serde(
serialize_with = "serializers::serialize_i64",
deserialize_with = "serializers::parse_i64"
)]
#[serde(with = "serializers::from_str")]
pub round: i64,

/// Current consensus step
Expand Down
13 changes: 2 additions & 11 deletions tendermint/src/evidence.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,10 +70,7 @@ impl AsRef<[Evidence]> for Data {
#[derive(Deserialize, Serialize, Clone, Debug, Eq, PartialEq)]
pub struct Params {
/// Maximum allowed age for evidence to be collected
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub max_age_num_blocks: u64,

/// Max age duration
Expand All @@ -84,13 +81,7 @@ pub struct Params {
/// essentially, to keep the usages look cleaner
/// i.e. you can avoid using serde annotations everywhere
#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)]
pub struct Duration(
#[serde(
serialize_with = "serializers::serialize_duration",
deserialize_with = "serializers::parse_duration"
)]
std::time::Duration,
);
pub struct Duration(#[serde(with = "serializers::time_duration")] std::time::Duration);

impl From<Duration> for std::time::Duration {
fn from(d: Duration) -> std::time::Duration {
Expand Down
2 changes: 1 addition & 1 deletion tendermint/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ pub mod node;
pub mod private_key;
pub mod public_key;
pub mod rpc;
mod serializers;
pub mod serializers;
pub mod signature;
pub mod time;
mod timeout;
Expand Down
10 changes: 2 additions & 8 deletions tendermint/src/lite/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,9 @@ pub trait TrustThreshold: Copy + Clone + Debug + Serialize + DeserializeOwned {
/// [`TrustThreshold`] which can be passed into all relevant methods.
#[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct TrustThresholdFraction {
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
numerator: u64,
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
denominator: u64,
}

Expand Down
15 changes: 3 additions & 12 deletions tendermint/src/node/info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,24 +36,15 @@ pub struct Info {
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
pub struct ProtocolVersionInfo {
/// P2P protocol version
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub p2p: u64,

/// Block version
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub block: u64,

/// App version
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub app: u64,
}

Expand Down
5 changes: 1 addition & 4 deletions tendermint/src/rpc/endpoint/abci_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@ pub struct AbciInfo {
pub version: String,

/// App version
#[serde(
serialize_with = "serializers::serialize_u64",
deserialize_with = "serializers::parse_u64"
)]
#[serde(with = "serializers::from_str")]
pub app_version: u64,

/// Last block height
Expand Down
16 changes: 3 additions & 13 deletions tendermint/src/rpc/endpoint/abci_query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,7 @@ pub struct Request {
path: Option<Path>,

/// Data to query
#[serde(
serialize_with = "serializers::serialize_hex",
deserialize_with = "serializers::parse_hex"
)]
#[serde(with = "serializers::bytes::hexstring")]
data: Vec<u8>,

/// Block height
Expand Down Expand Up @@ -75,18 +72,11 @@ pub struct AbciQuery {
pub info: String,

/// Index
#[serde(
serialize_with = "serializers::serialize_i64",
deserialize_with = "serializers::parse_i64"
)]
#[serde(with = "serializers::from_str")]
pub index: i64,

/// Key
#[serde(
default,
serialize_with = "serializers::serialize_base64",
deserialize_with = "serializers::parse_base64"
)]
#[serde(default, with = "serializers::bytes::base64string")]
pub key: Vec<u8>,

/// Value (might be explicit null)
Expand Down
Loading