Skip to main content

liminal_server/server/
connection.rs

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