use std::{
collections::HashMap,
sync::{Arc, Mutex},
};
use samod_core::{DocumentActorId, DocumentId, actors::document::DocActorResult};
use crate::{
actor_task::ActorTask,
doc_actor_inner::DocActorInner,
unbounded::{UnboundedReceiver, UnboundedSender},
};
pub(crate) enum DocRunner {
#[cfg(feature = "threadpool")]
Threadpool(rayon::ThreadPool),
Async {
tx_spawn: UnboundedSender<SpawnedActor>,
task_senders: HashMap<DocumentActorId, UnboundedSender<ActorTask>>,
},
}
pub(crate) struct SpawnedActor {
pub(crate) doc_id: DocumentId,
pub(crate) actor_id: DocumentActorId,
pub(crate) inner: Arc<Mutex<DocActorInner>>,
pub(crate) rx_tasks: UnboundedReceiver<ActorTask>,
pub(crate) init_results: DocActorResult,
}