use crate::COMPRESSION_SUFFIX_LABEL;
use aptos_types::transaction::Version;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct StorageServiceRequest {
pub data_request: DataRequest, pub use_compression: bool, }
impl StorageServiceRequest {
pub fn new(data_request: DataRequest, use_compression: bool) -> Self {
Self {
data_request,
use_compression,
}
}
pub fn get_label(&self) -> String {
let mut label = self.data_request.get_label().to_string();
if self.use_compression {
label += COMPRESSION_SUFFIX_LABEL;
}
label
}
}
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub enum DataRequest {
GetEpochEndingLedgerInfos(EpochEndingLedgerInfoRequest), GetNewTransactionOutputsWithProof(NewTransactionOutputsWithProofRequest), GetNewTransactionsWithProof(NewTransactionsWithProofRequest), GetNumberOfStatesAtVersion(Version), GetServerProtocolVersion, GetStateValuesWithProof(StateValuesWithProofRequest), GetStorageServerSummary, GetTransactionOutputsWithProof(TransactionOutputsWithProofRequest), GetTransactionsWithProof(TransactionsWithProofRequest), }
impl DataRequest {
pub fn get_label(&self) -> &'static str {
match self {
Self::GetEpochEndingLedgerInfos(_) => "get_epoch_ending_ledger_infos",
Self::GetNewTransactionOutputsWithProof(_) => "get_new_transaction_outputs_with_proof",
Self::GetNewTransactionsWithProof(_) => "get_new_transactions_with_proof",
Self::GetNumberOfStatesAtVersion(_) => "get_number_of_states_at_version",
Self::GetServerProtocolVersion => "get_server_protocol_version",
Self::GetStateValuesWithProof(_) => "get_state_values_with_proof",
Self::GetStorageServerSummary => "get_storage_server_summary",
Self::GetTransactionOutputsWithProof(_) => "get_transaction_outputs_with_proof",
Self::GetTransactionsWithProof(_) => "get_transactions_with_proof",
}
}
pub fn is_get_storage_server_summary(&self) -> bool {
matches!(self, &Self::GetStorageServerSummary)
}
pub fn is_data_subscription_request(&self) -> bool {
matches!(self, &Self::GetNewTransactionOutputsWithProof(_))
|| matches!(self, &Self::GetNewTransactionsWithProof(_))
}
}
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct EpochEndingLedgerInfoRequest {
pub start_epoch: u64, pub expected_end_epoch: u64, }
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct NewTransactionOutputsWithProofRequest {
pub known_version: u64, pub known_epoch: u64, }
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct NewTransactionsWithProofRequest {
pub known_version: u64, pub known_epoch: u64, pub include_events: bool, }
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct StateValuesWithProofRequest {
pub version: u64, pub start_index: u64, pub end_index: u64, }
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct TransactionOutputsWithProofRequest {
pub proof_version: u64, pub start_version: u64, pub end_version: u64, }
#[derive(Clone, Debug, Deserialize, Eq, Hash, PartialEq, Serialize)]
pub struct TransactionsWithProofRequest {
pub proof_version: u64, pub start_version: u64, pub end_version: u64, pub include_events: bool, }