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