use std::collections::HashMap;
use crate::{ConnectionId, DocumentId, PeerId, UnixTimestamp};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ConnectionInfo {
pub id: ConnectionId,
pub last_received: Option<UnixTimestamp>,
pub last_sent: Option<UnixTimestamp>,
pub docs: HashMap<DocumentId, PeerDocState>,
pub state: ConnectionState,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ConnectionState {
Handshaking,
Connected { their_peer_id: PeerId },
}
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd)]
pub struct PeerDocState {
pub last_received: Option<UnixTimestamp>,
pub last_sent: Option<UnixTimestamp>,
pub last_sent_heads: Option<Vec<automerge::ChangeHash>>,
pub last_acked_heads: Option<Vec<automerge::ChangeHash>>,
pub shared_heads: Option<Vec<automerge::ChangeHash>>,
pub their_heads: Option<Vec<automerge::ChangeHash>>,
}
impl PeerDocState {
pub(crate) fn empty() -> Self {
Self {
last_received: None,
last_sent: None,
last_sent_heads: None,
last_acked_heads: None,
shared_heads: None,
their_heads: None,
}
}
}