Skip to main content

liminal_server/server/
connection.rs

1#[path = "connection/apply.rs"]
2mod apply;
3mod broker_route;
4#[path = "connection/channel_registry.rs"]
5pub mod channel_registry;
6#[path = "connection/conversation.rs"]
7mod conversation;
8#[path = "connection/delivery.rs"]
9mod delivery;
10#[path = "connection/incarnation.rs"]
11mod incarnation;
12#[cfg(test)]
13#[path = "connection/incarnation_tests.rs"]
14mod incarnation_tests;
15mod lifecycle_route;
16mod link_route;
17#[path = "connection/loopback.rs"]
18mod loopback;
19#[path = "connection/notifier.rs"]
20pub mod notifier;
21#[path = "connection/outbound.rs"]
22mod outbound;
23#[path = "connection/participant_delivery.rs"]
24mod participant_delivery;
25#[cfg(test)]
26#[path = "connection/participant_runtime_tests.rs"]
27mod participant_runtime_tests;
28#[path = "connection/pending_reply.rs"]
29mod pending_reply;
30#[path = "connection/pre_admission.rs"]
31pub(crate) mod pre_admission;
32#[path = "connection/process.rs"]
33mod process;
34#[path = "connection/reclaim_placement.rs"]
35pub(crate) mod reclaim_placement;
36#[cfg(test)]
37#[path = "connection/reclaim_placement_tests.rs"]
38mod reclaim_placement_tests;
39#[path = "connection/refusal.rs"]
40pub(crate) mod refusal;
41#[cfg(test)]
42#[path = "connection/refusal_tests.rs"]
43mod refusal_tests;
44#[path = "connection/service_directory.rs"]
45mod service_directory;
46mod service_route;
47mod service_tap;
48#[path = "connection/services.rs"]
49pub mod services;
50#[cfg(test)]
51#[path = "connection/services_a1_dedup_tests.rs"]
52mod services_a1_dedup_tests;
53#[cfg(test)]
54#[path = "connection/services_adopt_config_tests.rs"]
55mod services_adopt_config_tests;
56#[path = "connection/services_cluster.rs"]
57mod services_cluster;
58#[cfg(test)]
59#[path = "connection/services_r5_tests.rs"]
60mod services_r5_tests;
61#[path = "connection/services_schema.rs"]
62mod services_schema;
63#[cfg(test)]
64mod services_tap_tests;
65#[cfg(test)]
66#[path = "connection/services_unresolved_restart_tests.rs"]
67mod services_unresolved_restart_tests;
68#[cfg(test)]
69#[path = "connection/services_unresolved_tests.rs"]
70mod services_unresolved_tests;
71#[path = "connection/state.rs"]
72mod state;
73#[path = "connection/supervisor.rs"]
74mod supervisor;
75#[cfg(test)]
76#[path = "connection/tests_no_path_refusal.rs"]
77mod tests_no_path_refusal;
78#[path = "connection/wake.rs"]
79pub(crate) mod wake;
80#[path = "connection/websocket.rs"]
81pub(crate) mod websocket;
82#[path = "connection/worker_front_door.rs"]
83mod worker_front_door;
84#[path = "connection/worker_route.rs"]
85mod worker_route;
86
87pub use channel_registry::{
88    CONSOLE_NAMESPACE_PREFIX, CONSOLE_TAP_PREFIX, ChannelAccessError, ChannelConfigField,
89    ChannelDescriptor, ChannelOrigin, ChannelRegistration, ChannelRegistryError, ChannelState,
90    ChannelStatus, MAX_CHANNELS_KEY, Registered, console_tap_target, is_console_subject,
91};
92pub use conversation::{ConnectionConversation, ConversationResource};
93// The in-process transport's public surface is exactly two names: the type an
94// embedded caller holds and the constructor that mints it. `LoopbackServerEnd`
95// is deliberately NOT re-exported — it is the half that touches the connection
96// machinery, so the private `loopback` module is its visibility ceiling and the
97// step-3 sites that need it (all of them inside `connection`) reach it as
98// `loopback::LoopbackServerEnd`.
99pub use loopback::{LoopbackClientEnd, LoopbackDuplex};
100pub use notifier::{CheckpointCrossing, ConnectionNotifier, CrossingBinding, CrossingRecipient};
101#[cfg(test)]
102pub(crate) const fn assert_held_heads_are_move_only() {
103    macro_rules! assert_not_impl {
104        ($type:ty: $trait:path) => {
105            const _: fn() = || {
106                struct Probe<T: ?Sized>(core::marker::PhantomData<T>);
107                trait AmbiguousIfImplemented<A> {
108                    fn probe() {}
109                }
110                impl<T: ?Sized> AmbiguousIfImplemented<()> for Probe<T> {}
111                impl<T: ?Sized + $trait> AmbiguousIfImplemented<u8> for Probe<T> {}
112                let _ = <Probe<$type> as AmbiguousIfImplemented<_>>::probe;
113            };
114        };
115    }
116    assert_not_impl!(participant_delivery::HeldParticipantHead: Clone);
117    assert_not_impl!(participant_delivery::HeldParticipantHead: Copy);
118    assert_not_impl!(participant_delivery::HeldObserverHead: Clone);
119    assert_not_impl!(participant_delivery::HeldObserverHead: Copy);
120}
121pub use services::{
122    ChannelCluster, ChannelOperation, ConnectionServices, ConnectionSubscription,
123    LiminalConnectionServices, PublishOutcome, build_connection_services,
124};
125pub use supervisor::ConnectionSupervisor;
126pub use supervisor::builder::ConnectionSupervisorBuilder;
127pub(crate) use supervisor::builder::{LysInstall, configured_lys, lys_ask_runtime};
128pub use supervisor::context_watch::start_context_watch;
129pub use supervisor::handle::{ConnectionHandle, PushReplyAwaiter};
130pub(crate) use wake::ReadyWaker;
131pub use websocket::WebSocketListener;
132pub use worker_front_door::WorkerFrontDoorServices;