use crate::tracking_copy::TrackingCopyError;
use casper_types::Digest;
pub const EXECUTION_RESULTS_CHECKSUM_NAME: &str = "execution_results_checksum";
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ExecutionResultsChecksumRequest {
state_hash: Digest,
}
impl ExecutionResultsChecksumRequest {
pub fn new(state_hash: Digest) -> Self {
ExecutionResultsChecksumRequest { state_hash }
}
pub fn state_hash(&self) -> Digest {
self.state_hash
}
}
#[derive(Debug)]
pub enum ExecutionResultsChecksumResult {
RootNotFound,
RegistryNotFound,
ChecksumNotFound,
Success {
checksum: Digest,
},
Failure(TrackingCopyError),
}
impl ExecutionResultsChecksumResult {
pub fn as_legacy(&self) -> Result<Option<Digest>, TrackingCopyError> {
match self {
ExecutionResultsChecksumResult::RootNotFound
| ExecutionResultsChecksumResult::RegistryNotFound
| ExecutionResultsChecksumResult::ChecksumNotFound => Ok(None),
ExecutionResultsChecksumResult::Success { checksum } => Ok(Some(*checksum)),
ExecutionResultsChecksumResult::Failure(err) => Err(err.clone()),
}
}
}