neo_devpack_solidity/runtime/storage/storage_impl/manager/
stats.rs1use super::*;
2
3impl StorageManager {
4 pub fn read_count(&self) -> u64 {
6 self.read_count
7 }
8
9 pub fn write_count(&self) -> u64 {
11 self.write_count
12 }
13
14 pub fn get_statistics(&self) -> StorageStatistics {
16 let total_accounts = self.storage.len();
17 let total_keys: usize = self.storage.values().map(|s| s.storage.len()).sum();
18 let total_storage_bytes: usize = self
19 .storage
20 .values()
21 .flat_map(|s| s.storage.iter())
22 .map(|(k, v)| k.len() + v.len())
23 .sum();
24 let pending_changes: usize = self.storage.values().map(|s| s.pending_changes.len()).sum();
25
26 StorageStatistics {
27 total_accounts,
28 total_keys,
29 total_storage_bytes,
30 read_operations: self.read_count,
31 write_operations: self.write_count,
32 pending_changes,
33 }
34 }
35
36 pub fn clear(&mut self) {
38 self.storage.clear();
39 self.read_count = 0;
40 self.write_count = 0;
41 }
42}