json: add GetTransactionPoolBacklog, GetOutputDistribution

This commit is contained in:
hinto.janai 2024-07-04 17:33:03 -04:00
parent 32730272ea
commit e19dfb40ee
No known key found for this signature in database
GPG key ID: D47CE05FA175A499
5 changed files with 74 additions and 6 deletions

View file

@ -59,7 +59,8 @@ values inside JSON strings, for example:
`binary` here is (de)serialized as a normal [`String`]. In order to be clear on which fields contain binary data, the struct fields that have them will use [`crate::BinaryString`] instead of [`String`]. `binary` here is (de)serialized as a normal [`String`]. In order to be clear on which fields contain binary data, the struct fields that have them will use [`crate::BinaryString`] instead of [`String`].
TODO: list the specific types. - TODO: list the specific types.
- TODO: we need to figure out a type that (de)serializes correctly, `String` errors with `serde_json`
# Feature flags # Feature flags
List of feature flags for `cuprate-rpc-types`. List of feature flags for `cuprate-rpc-types`.

View file

@ -3,7 +3,7 @@
//---------------------------------------------------------------------------------------------------- Import //---------------------------------------------------------------------------------------------------- Import
//---------------------------------------------------------------------------------------------------- BinaryString //---------------------------------------------------------------------------------------------------- BinaryString
/// TODO /// TODO: we need to figure out a type that (de)serializes correctly, `String` errors with `serde_json`
/// ///
/// ```rust /// ```rust
/// use serde::Deserialize; /// use serde::Deserialize;

View file

@ -10,9 +10,9 @@ use crate::{
macros::define_request_and_response, macros::define_request_and_response,
misc::{ misc::{
BlockHeader, ChainInfo, ConnectionInfo, GetBan, HardforkEntry, HistogramEntry, Peer, BlockHeader, ChainInfo, ConnectionInfo, GetBan, HardforkEntry, HistogramEntry, Peer,
SetBan, Span, SetBan, Span, TxBacklogEntry,
}, },
Status, OutputDistributionData, Status,
}; };
//---------------------------------------------------------------------------------------------------- Struct definitions //---------------------------------------------------------------------------------------------------- Struct definitions
@ -520,7 +520,7 @@ define_request_and_response! {
core_rpc_server_commands_defs.h => 2383..=2443, core_rpc_server_commands_defs.h => 2383..=2443,
SyncInfo, SyncInfo,
Request {}, Request {},
Response { AccessResponseBase {
height: u64, height: u64,
next_needed_pruning_seed: u32, next_needed_pruning_seed: u32,
overview: String, overview: String,
@ -532,6 +532,37 @@ define_request_and_response! {
} }
} }
define_request_and_response! {
get_txpool_backlog,
cc73fe71162d564ffda8e549b79a350bca53c454 =>
core_rpc_server_commands_defs.h => 1637..=1664,
GetTransactionPoolBacklog,
Request {},
ResponseBase {
backlog: Vec<TxBacklogEntry>,
}
}
define_request_and_response! {
get_output_distribution,
cc73fe71162d564ffda8e549b79a350bca53c454 =>
core_rpc_server_commands_defs.h => 2445..=2520,
GetOutputDistribution,
Request {
amounts: Vec<u64>,
binary: bool,
compress: bool,
cumulative: bool,
from_height: u64,
to_height: u64,
},
/// TODO: this request has custom serde:
/// <https://github.com/monero-project/monero/blob/cc73fe71162d564ffda8e549b79a350bca53c454/src/rpc/core_rpc_server_commands_defs.h#L2468-L2508>
AccessResponseBase {
distributions: Vec<OutputDistributionData>,
}
}
//---------------------------------------------------------------------------------------------------- Tests //---------------------------------------------------------------------------------------------------- Tests
#[cfg(test)] #[cfg(test)]
mod test { mod test {

View file

@ -125,5 +125,6 @@ pub mod other;
mod misc; mod misc;
pub use misc::{ pub use misc::{
BlockHeader, ChainInfo, ConnectionInfo, GetBan, HardforkEntry, HistogramEntry, SetBan, Peer, Span, BlockHeader, ChainInfo, ConnectionInfo, GetBan, HardforkEntry, HistogramEntry,
OutputDistributionData, Peer, SetBan, Span, TxBacklogEntry,
}; };

View file

@ -248,6 +248,41 @@ define_struct_and_impl_epee! {
} }
} }
define_struct_and_impl_epee! {
#[doc = monero_definition_link!(
cc73fe71162d564ffda8e549b79a350bca53c454,
"rpc/core_rpc_server_commands_defs.h",
1637..=1642
)]
/// Used in [`crate::json::GetTransactionPoolBacklog`].
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
TxBacklogEntry {
weight: u64,
fee: u64,
time_in_pool: u64,
}
}
define_struct_and_impl_epee! {
#[doc = monero_definition_link!(
cc73fe71162d564ffda8e549b79a350bca53c454,
"rpc/rpc_handler.h",
45..=50
)]
/// Used in [`crate::json::GetOutputDistribution`].
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
OutputDistributionData {
distribution: Vec<u64>,
start_height: u64,
base: u64,
}
}
//---------------------------------------------------------------------------------------------------- Custom serde
// This section is for `struct`s that have custom (de)serialization code.
//---------------------------------------------------------------------------------------------------- Tests //---------------------------------------------------------------------------------------------------- Tests
#[cfg(test)] #[cfg(test)]
mod test { mod test {