casper_storage/data_access_layer/
protocol_upgrade.rs1use casper_types::{execution::Effects, Digest, ProtocolUpgradeConfig};
2
3use crate::system::protocol_upgrade::ProtocolUpgradeError;
4
5#[derive(Debug, Clone, PartialEq, Eq)]
7pub struct ProtocolUpgradeRequest {
8 config: ProtocolUpgradeConfig,
9}
10
11impl ProtocolUpgradeRequest {
12 pub fn new(config: ProtocolUpgradeConfig) -> Self {
14 ProtocolUpgradeRequest { config }
15 }
16
17 pub fn config(&self) -> &ProtocolUpgradeConfig {
19 &self.config
20 }
21
22 pub fn pre_state_hash(&self) -> Digest {
24 self.config.pre_state_hash()
25 }
26}
27
28#[derive(Debug, Clone)]
30pub enum ProtocolUpgradeResult {
31 RootNotFound,
33 Success {
35 post_state_hash: Digest,
37 effects: Effects,
39 },
40 Failure(ProtocolUpgradeError),
42}
43
44impl ProtocolUpgradeResult {
45 pub fn is_success(&self) -> bool {
47 matches!(self, ProtocolUpgradeResult::Success { .. })
48 }
49
50 pub fn is_err(&self) -> bool {
52 match self {
53 ProtocolUpgradeResult::RootNotFound | ProtocolUpgradeResult::Failure(_) => true,
54 ProtocolUpgradeResult::Success { .. } => false,
55 }
56 }
57}
58
59impl From<ProtocolUpgradeError> for ProtocolUpgradeResult {
60 fn from(err: ProtocolUpgradeError) -> Self {
61 ProtocolUpgradeResult::Failure(err)
62 }
63}