massa_deferred_calls/
slot_changes.rs1use std::collections::BTreeMap;
2
3use crate::{
4 DeferredCall, DeferredRegistryBaseFeeChange, DeferredRegistryCallChange,
5 DeferredRegistryGasChange,
6};
7use massa_models::{amount::Amount, deferred_calls::DeferredCallId};
8use serde::{Deserialize, Serialize};
9
10#[derive(Default, Debug, Clone, Serialize, Deserialize)]
11pub struct DeferredRegistrySlotChanges {
12 pub calls: BTreeMap<DeferredCallId, DeferredRegistryCallChange>,
13 pub effective_slot_gas: DeferredRegistryGasChange<u64>,
14 pub base_fee: DeferredRegistryBaseFeeChange,
15}
16
17impl DeferredRegistrySlotChanges {
18 pub fn calls_len(&self) -> usize {
19 self.calls.len()
20 }
21
22 pub fn delete_call(&mut self, id: &DeferredCallId) {
24 match self.calls.entry(id.clone()) {
25 std::collections::btree_map::Entry::Occupied(mut v) => {
26 *v.get_mut() = DeferredRegistryCallChange::Delete;
27 }
28 std::collections::btree_map::Entry::Vacant(v) => {
29 v.insert(DeferredRegistryCallChange::Delete);
30 }
31 }
32 }
33
34 pub fn set_call(&mut self, id: DeferredCallId, call: DeferredCall) {
35 self.calls.insert(id, DeferredRegistryCallChange::Set(call));
36 }
37
38 pub fn get_call_change(&self, id: &DeferredCallId) -> Option<&DeferredRegistryCallChange> {
43 self.calls.get(id)
44 }
45
46 pub fn set_effective_slot_gas(&mut self, gas: u64) {
47 self.effective_slot_gas = DeferredRegistryGasChange::Set(gas);
48 }
49
50 pub fn get_effective_slot_gas(&self) -> Option<u64> {
51 match self.effective_slot_gas {
52 DeferredRegistryGasChange::Set(v) => Some(v),
53 DeferredRegistryGasChange::Keep => None,
54 }
55 }
56
57 pub fn get_base_fee(&self) -> Option<Amount> {
58 match self.base_fee {
59 DeferredRegistryGasChange::Set(v) => Some(v),
60 DeferredRegistryGasChange::Keep => None,
61 }
62 }
63
64 pub fn set_base_fee(&mut self, base_fee: Amount) {
65 self.base_fee = DeferredRegistryGasChange::Set(base_fee);
66 }
67}