cita_tool/client/
transaction_option.rs

1use types::U256;
2
3/// Transaction parameter option
4#[derive(Clone, Copy, Debug)]
5pub struct TransactionOptions<'a> {
6    code: &'a str,
7    address: &'a str,
8    current_height: Option<u64>,
9    quota: Option<u64>,
10    value: Option<U256>,
11    version: Option<u32>,
12    sender: Option<&'a str>,
13}
14
15impl<'a> TransactionOptions<'a> {
16    /// Default option
17    pub fn new() -> Self {
18        TransactionOptions {
19            code: "0x",
20            address: "0x",
21            current_height: None,
22            quota: None,
23            value: None,
24            version: None,
25            sender: None,
26        }
27    }
28
29    /// Set code. Transaction content, default is "0x"
30    pub fn set_code(mut self, code: &'a str) -> Self {
31        self.code = code;
32        self
33    }
34
35    /// Get code
36    pub fn code(&self) -> &str {
37        self.code
38    }
39
40    /// Set address. Destination address (account or contract address),
41    /// default is "0x", which creates the contract
42    pub fn set_address(mut self, address: &'a str) -> Self {
43        self.address = address;
44        self
45    }
46
47    /// Get address
48    pub fn address(&self) -> &str {
49        self.address
50    }
51
52    /// Set current height. Used to set until_block.
53    /// Set the current chain height, the default is None,
54    /// automatically query before the transaction to get the current chain height
55    pub fn set_current_height(mut self, height: Option<u64>) -> Self {
56        self.current_height = height;
57        self
58    }
59
60    /// Get current height
61    pub fn current_height(&self) -> Option<u64> {
62        self.current_height
63    }
64
65    /// Set quota. Transaction consumption quota limit
66    pub fn set_quota(mut self, quota: Option<u64>) -> Self {
67        self.quota = quota;
68        self
69    }
70
71    /// Get quota
72    pub fn quota(&self) -> Option<u64> {
73        self.quota
74    }
75
76    /// Set value. Transaction transfer amount
77    pub fn set_value(mut self, value: Option<U256>) -> Self {
78        self.value = value;
79        self
80    }
81
82    /// Get value
83    pub fn value(&self) -> Option<U256> {
84        self.value
85    }
86
87    /// Set version.
88    pub fn set_version(mut self, version: Option<u32>) -> Self {
89        self.version = version;
90        self
91    }
92
93    /// Get version
94    pub fn version(&self) -> Option<u32> {
95        self.version
96    }
97
98    /// Restore initialization status
99    pub fn clear(&mut self) {
100        self.value = None;
101        self.quota = None;
102        self.current_height = None;
103        self.address = "0x";
104        self.code = "0x";
105        self.version = None
106    }
107
108    /// Set sender. Sender account address,
109    /// default is none, which use default account
110    pub fn set_sender(mut self, address: &'a str) -> Self {
111        self.sender = Some(address);
112        self
113    }
114
115    /// Get address
116    pub fn sender(&self) -> Option<&str> {
117        self.sender
118    }
119}
120
121impl Default for TransactionOptions<'static> {
122    fn default() -> Self {
123        TransactionOptions::new()
124    }
125}