Skip to main content

rings_rpc/protos/
mod.rs

1pub mod rings_node;
2pub mod rings_node_handler;
3
4use rings_core::inspect::ConnectionInspect;
5use rings_core::inspect::StorageInspect;
6use rings_core::inspect::SwarmInspect;
7
8impl From<SwarmInspect> for rings_node::SwarmInfo {
9    fn from(inspect: SwarmInspect) -> Self {
10        let peers = inspect.peers.into_iter().map(|conn| conn.into()).collect();
11
12        let dht = rings_node::DhtInfo {
13            did: inspect.dht.did,
14            successors: inspect.dht.successors,
15            predecessor: inspect.dht.predecessor,
16            finger_table_ranges: inspect
17                .dht
18                .finger_table
19                .into_iter()
20                .map(|(did, start, end)| rings_node::FingerTableRange { did, start, end })
21                .collect(),
22        };
23
24        Self {
25            peers,
26            dht: Some(dht),
27            persistence_storage: Some(inspect.persistence_storage.into()),
28            cache_storage: Some(inspect.cache_storage.into()),
29        }
30    }
31}
32
33impl From<StorageInspect> for rings_node::StorageInfo {
34    fn from(inspect: StorageInspect) -> Self {
35        Self {
36            items: inspect
37                .items
38                .into_iter()
39                .map(|(key, vnode)| rings_node::StorageItem {
40                    key,
41                    value: Some(rings_node::StorageValue {
42                        did: vnode.did.to_string(),
43                        kind: format!("{:?}", vnode.kind),
44                        data: vnode.data.into_iter().map(|x| x.value().clone()).collect(),
45                    }),
46                })
47                .collect(),
48        }
49    }
50}
51
52impl From<ConnectionInspect> for rings_node::PeerInfo {
53    fn from(value: ConnectionInspect) -> Self {
54        rings_node::PeerInfo {
55            did: value.did,
56            state: value.state,
57        }
58    }
59}