Skip to main content

neo_devpack_solidity/runtime/storage/storage_impl/manager/
stats.rs

1use super::*;
2
3impl StorageManager {
4    /// Get read count
5    pub fn read_count(&self) -> u64 {
6        self.read_count
7    }
8
9    /// Get write count
10    pub fn write_count(&self) -> u64 {
11        self.write_count
12    }
13
14    /// Get storage statistics
15    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    /// Clear all storage (for testing)
37    pub fn clear(&mut self) {
38        self.storage.clear();
39        self.read_count = 0;
40        self.write_count = 0;
41    }
42}