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