Skip to main content

samod_core/actors/document/
spawn_args.rs

1use std::collections::HashMap;
2
3use crate::{
4    ConnectionId, DialerId, DocumentActorId, PeerId,
5    actors::messages::{DocDialerState, DocMessage},
6};
7
8#[derive(Clone)]
9pub struct SpawnArgs {
10    pub(crate) local_peer_id: PeerId,
11    pub(crate) actor_id: DocumentActorId,
12    pub(crate) document_id: crate::DocumentId,
13    pub(crate) initial_content: Option<automerge::Automerge>,
14    pub(crate) initial_connections: HashMap<ConnectionId, (PeerId, Option<DocMessage>)>,
15    /// Current dialer states at spawn time, so the document actor can factor
16    /// connecting dialers into its availability decisions from the start.
17    pub(crate) dialer_states: HashMap<DialerId, DocDialerState>,
18}
19
20impl std::fmt::Debug for SpawnArgs {
21    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
22        f.debug_struct("SpawnArgs")
23            .field("actor_id", &self.actor_id)
24            .field("local_peer_id", &self.local_peer_id)
25            .field("document_id", &self.document_id)
26            .field(
27                "initial_content",
28                &self.initial_content.as_ref().map(|_| "<Automerge>"),
29            )
30            .field("initial_connections", &self.initial_connections)
31            .finish()
32    }
33}
34
35impl SpawnArgs {
36    pub fn actor_id(&self) -> DocumentActorId {
37        self.actor_id
38    }
39
40    pub fn document_id(&self) -> &crate::DocumentId {
41        &self.document_id
42    }
43}