Skip to main content

liminal_server/server/
connection.rs

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