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}