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