Skip to main content

atomr_core/actor/
provider.rs

1//! Actor ref providers.,
2//! `Actor/LocalActorRefProvider.cs`.
3
4use super::address::Address;
5use super::path::ActorPath;
6
7/// Abstract over which backing runtime provides an actor ref:
8/// local, remote, or cluster. Default is `Local`.
9pub trait ActorRefProvider: Send + Sync {
10    fn root_path(&self) -> ActorPath;
11    fn address(&self) -> &Address;
12}
13
14pub struct LocalActorRefProvider {
15    pub address: Address,
16}
17
18impl LocalActorRefProvider {
19    pub fn new(address: Address) -> Self {
20        Self { address }
21    }
22}
23
24impl ActorRefProvider for LocalActorRefProvider {
25    fn root_path(&self) -> ActorPath {
26        ActorPath::root(self.address.clone())
27    }
28
29    fn address(&self) -> &Address {
30        &self.address
31    }
32}