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