From 72bd1673d6166c616c4ac93b4ecabd3d325b930b Mon Sep 17 00:00:00 2001 From: "hinto.janai" <hinto.janai@protonmail.com> Date: Wed, 3 Jul 2024 15:55:04 -0400 Subject: [PATCH] add `misc.rs` for root misc types --- rpc/types/src/base.rs | 22 ++---------- rpc/types/src/lib.rs | 4 ++- rpc/types/src/macros.rs | 21 ++++++++++++ rpc/types/src/misc.rs | 74 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 101 insertions(+), 20 deletions(-) create mode 100644 rpc/types/src/misc.rs diff --git a/rpc/types/src/base.rs b/rpc/types/src/base.rs index c33df1a9..869a22f8 100644 --- a/rpc/types/src/base.rs +++ b/rpc/types/src/base.rs @@ -18,28 +18,13 @@ use serde::{Deserialize, Serialize}; #[cfg(feature = "epee")] use cuprate_epee_encoding::epee_object; -use crate::Status; - -//---------------------------------------------------------------------------------------------------- Macro -/// Link the original `monerod` definition for RPC base types. -macro_rules! monero_rpc_base_link { - ($start:literal..=$end:literal) => { - concat!( - "[Definition](https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server_commands_defs.h#L", - stringify!($start), - "-L", - stringify!($end), - ")." - ) - }; -} +use crate::{macros::monero_definition_link, Status}; //---------------------------------------------------------------------------------------------------- Requests //---------------------------------------------------------------------------------------------------- Responses +#[doc = monero_definition_link!(cc73fe71162d564ffda8e549b79a350bca53c454 => core_rpc_server_commands_defs.h => 101..=112)] /// The most common base for responses. -/// -#[doc = monero_rpc_base_link!(101..=112)] #[derive(Copy, Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct ResponseBase { @@ -58,9 +43,8 @@ epee_object! { untrusted: bool, } +#[doc = monero_definition_link!(cc73fe71162d564ffda8e549b79a350bca53c454 => core_rpc_server_commands_defs.h => 124..=136)] /// A base for RPC response types that support RPC payment. -/// -#[doc = monero_rpc_base_link!(124..=136)] #[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)] #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct AccessResponseBase { diff --git a/rpc/types/src/lib.rs b/rpc/types/src/lib.rs index dc58ea9d..f4edb6a5 100644 --- a/rpc/types/src/lib.rs +++ b/rpc/types/src/lib.rs @@ -14,7 +14,6 @@ unused_allocation, coherence_leak_check, while_true, - clippy::missing_docs_in_private_items, // Maybe can be put into `#[deny]`. unconditional_recursion, @@ -121,3 +120,6 @@ pub mod json; #[cfg(feature = "other")] #[cfg_attr(docsrs, doc(cfg(feature = "other")))] pub mod other; + +mod misc; +pub use misc::BlockHeader; diff --git a/rpc/types/src/macros.rs b/rpc/types/src/macros.rs index 80054db7..5de207ea 100644 --- a/rpc/types/src/macros.rs +++ b/rpc/types/src/macros.rs @@ -288,3 +288,24 @@ macro_rules! define_request_and_response_doc { }; } pub(crate) use define_request_and_response_doc; + +//---------------------------------------------------------------------------------------------------- Macro +/// Link the original `monerod` definition for RPC base types. +macro_rules! monero_definition_link { + ($commit:ident => $file:ident.$file_extension:ident => $start:literal..=$end:literal) => { + concat!( + "[Definition](https://github.com/monero-project/monero/blob/", + stringify!($commit), + "/src/rpc/", + stringify!($file), + ".", + stringify!($file_extension), + "#L", + stringify!($start), + "-L", + stringify!($end), + ")." + ) + }; +} +pub(crate) use monero_definition_link; diff --git a/rpc/types/src/misc.rs b/rpc/types/src/misc.rs new file mode 100644 index 00000000..b6ed3bb1 --- /dev/null +++ b/rpc/types/src/misc.rs @@ -0,0 +1,74 @@ +//! TODO + +//---------------------------------------------------------------------------------------------------- Import +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + +#[cfg(feature = "epee")] +use cuprate_epee_encoding::epee_object; + +use crate::macros::monero_definition_link; + +//---------------------------------------------------------------------------------------------------- BlockHeader +#[doc = monero_definition_link!(cc73fe71162d564ffda8e549b79a350bca53c454 => core_rpc_server_commands_defs.h => 1163..=1212)] +/// TODO. +#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +#[allow(missing_docs)] +pub struct BlockHeader { + pub major_version: u8, + pub minor_version: u8, + pub timestamp: u64, + pub prev_hash: String, + pub nonce: u32, + pub orphan_status: bool, + pub height: u64, + pub depth: u64, + pub hash: String, + pub difficulty: u64, + pub wide_difficulty: String, + pub difficulty_top64: u64, + pub cumulative_difficulty: u64, + pub wide_cumulative_difficulty: String, + pub cumulative_difficulty_top64: u64, + pub reward: u64, + pub block_size: u64, + pub block_weight: u64, + pub num_txes: u64, + pub pow_hash: String, + pub long_term_weight: u64, + pub miner_tx_hash: String, +} + +#[cfg(feature = "epee")] +epee_object! { + BlockHeader, + major_version: u8, + minor_version: u8, + timestamp: u64, + prev_hash: String, + nonce: u32, + orphan_status: bool, + height: u64, + depth: u64, + hash: String, + difficulty: u64, + wide_difficulty: String, + difficulty_top64: u64, + cumulative_difficulty: u64, + wide_cumulative_difficulty: String, + cumulative_difficulty_top64: u64, + reward: u64, + block_size: u64, + block_weight: u64, + num_txes: u64, + pow_hash: String, + long_term_weight: u64, + miner_tx_hash: String, +} + +//---------------------------------------------------------------------------------------------------- Tests +#[cfg(test)] +mod test { + // use super::*; +}