little_durable_objects/
host.rs1mod actor_host;
2mod actor_runtime;
3mod lease_maintenance;
4mod process;
5
6use serde::{Deserialize, Serialize};
7use std::fmt;
8
9pub use self::process::{ActorHostConfig, serve_actor_host};
10pub(crate) use self::{
11 actor_host::ActorHost,
12 lease_maintenance::{HostLeaseMaintainer, LeaseRenewalTask},
13};
14
15#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
16#[serde(rename_all = "lowercase")]
17pub enum ActorProcessRole {
18 Workflow,
19 Host,
20}
21
22#[derive(Clone, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
23pub struct HostId(String);
24
25impl HostId {
26 pub fn new<S>(id: S) -> Self
27 where
28 S: Into<String>,
29 {
30 Self(id.into())
31 }
32
33 pub fn as_str(&self) -> &str {
34 &self.0
35 }
36}
37
38impl fmt::Display for HostId {
39 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
40 f.write_str(&self.0)
41 }
42}
43
44#[derive(Clone, Debug, PartialEq, Eq)]
45pub(crate) struct HostEndpoint {
46 pub id: HostId,
47 pub route: String,
48}
49
50#[cfg(test)]
51mod tests {
52 use super::*;
53
54 #[test]
55 fn process_roles_use_current_names() -> anyhow::Result<()> {
56 assert_eq!(
57 serde_json::to_value(ActorProcessRole::Workflow)?,
58 "workflow"
59 );
60 assert_eq!(serde_json::to_value(ActorProcessRole::Host)?, "host");
61 assert!(serde_json::from_value::<ActorProcessRole>(serde_json::json!("caller")).is_err());
62 Ok(())
63 }
64}