use casper_types::{execution::Effects, Digest, ProtocolUpgradeConfig};
use crate::system::protocol_upgrade::ProtocolUpgradeError;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ProtocolUpgradeRequest {
config: ProtocolUpgradeConfig,
}
impl ProtocolUpgradeRequest {
pub fn new(config: ProtocolUpgradeConfig) -> Self {
ProtocolUpgradeRequest { config }
}
pub fn config(&self) -> &ProtocolUpgradeConfig {
&self.config
}
pub fn pre_state_hash(&self) -> Digest {
self.config.pre_state_hash()
}
}
#[derive(Debug, Clone)]
pub enum ProtocolUpgradeResult {
RootNotFound,
Success {
post_state_hash: Digest,
effects: Effects,
},
Failure(ProtocolUpgradeError),
}
impl ProtocolUpgradeResult {
pub fn is_success(&self) -> bool {
matches!(self, ProtocolUpgradeResult::Success { .. })
}
pub fn is_err(&self) -> bool {
match self {
ProtocolUpgradeResult::RootNotFound | ProtocolUpgradeResult::Failure(_) => true,
ProtocolUpgradeResult::Success { .. } => false,
}
}
}
impl From<ProtocolUpgradeError> for ProtocolUpgradeResult {
fn from(err: ProtocolUpgradeError) -> Self {
ProtocolUpgradeResult::Failure(err)
}
}