hydro_lang/compile/
embedded_runtime.rs1use futures::Stream;
7use stageleft::{QuotedWithContext, RuntimeData, q};
8
9use crate::location::MembershipEvent;
10use crate::location::member_id::TaglessMemberId;
11
12#[cfg_attr(
13 not(any(
14 feature = "deploy_integration",
15 feature = "docker_runtime",
16 feature = "maelstrom_runtime"
17 )),
18 expect(
19 unreachable_code,
20 reason = "uninhabited but deploy_integration required at embedded runtime"
21 )
22)]
23pub fn embedded_cluster_self_id<'a>() -> impl QuotedWithContext<'a, TaglessMemberId, ()> + Clone + 'a
25{
26 let self_id: RuntimeData<&TaglessMemberId> = RuntimeData::new("__cluster_self_id");
27 q!(self_id.clone())
28}
29
30pub fn embedded_cluster_membership_stream<'a>(
32 idx: usize,
33) -> impl QuotedWithContext<'a, Box<dyn Stream<Item = (TaglessMemberId, MembershipEvent)> + Unpin>, ()>
34{
35 let var_name: &'static str = Box::leak(format!("__membership_{}", idx).into_boxed_str());
38 let membership: RuntimeData<
39 Box<dyn Stream<Item = (TaglessMemberId, MembershipEvent)> + Unpin>,
40 > = RuntimeData::new(var_name);
41 q!(membership)
42}