samod_core/network/
connection_info.rs1use std::collections::HashMap;
2
3use crate::{ConnectionId, DocumentId, PeerId, UnixTimestamp};
4
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub struct ConnectionInfo {
7 pub id: ConnectionId,
8 pub last_received: Option<UnixTimestamp>,
9 pub last_sent: Option<UnixTimestamp>,
10 pub docs: HashMap<DocumentId, PeerDocState>,
11 pub state: ConnectionState,
12}
13
14#[derive(Debug, Clone, PartialEq, Eq)]
15pub enum ConnectionState {
16 Handshaking,
17 Connected { their_peer_id: PeerId },
18}
19
20#[derive(Debug, Clone, PartialEq, Eq, PartialOrd)]
21pub struct PeerDocState {
22 pub last_received: Option<UnixTimestamp>,
24 pub last_sent: Option<UnixTimestamp>,
26 pub last_sent_heads: Option<Vec<automerge::ChangeHash>>,
28 pub last_acked_heads: Option<Vec<automerge::ChangeHash>>,
30}
31
32impl PeerDocState {
33 pub(crate) fn empty() -> Self {
34 Self {
35 last_received: None,
36 last_sent: None,
37 last_sent_heads: None,
38 last_acked_heads: None,
39 }
40 }
41}