Skip to main content

helix_driver_host/
lib.rs

1//! Shared host driver pieces for PC Tauri and Flutter FFI.
2
3pub mod batch_sink;
4pub mod codec;
5pub mod diagnostics;
6pub mod dispatch;
7pub mod engine;
8pub mod http_cross;
9pub mod http_envelope;
10pub mod instrument;
11pub mod lifecycle;
12pub mod local_store;
13pub mod metrics;
14pub mod network;
15mod network_debug;
16#[cfg(test)]
17mod network_lifecycle_tests;
18pub mod ops;
19pub mod otel;
20pub mod owned_effect;
21pub mod pools;
22pub mod reconnect;
23pub mod spawner;
24pub mod storage;
25mod tick_ingress;
26pub mod timer;
27pub mod trace;
28pub mod upload;
29pub mod upsert_sql;
30
31pub use batch_sink::BatchSink;
32pub use codec::{rows_from_reply_bytes, rows_to_reply_bytes};
33pub use engine::{
34    register_transport, run_engine_loop, run_engine_loop_stamped, EngineDeps,
35    TransportRegistration, TransportTable, TransportTraceSink,
36};
37pub use http_cross::{AuthTokenRegistry, CrossCuttingHttp, HttpOutcomeObserver};
38pub use http_envelope::{base64_encode, run_http_envelope};
39pub use instrument::RecordingSink;
40pub use lifecycle::{
41    LifecycleCapability, LifecycleContext, LifecycleObservation, LifecycleStage, LifecycleState,
42    LifecycleStatus, LifecycleTraceSink, LifecycleTraceStats, LifecycleTracker, TickId,
43    LIFECYCLE_LINK_CAPACITY, LIFECYCLE_TRACE_QUEUE_CAPACITY,
44};
45pub use local_store::{
46    BackendScope, LocalStoreError, LocalStoreIdentity, LocalStoreLocator, LocalStorePaths,
47};
48pub use metrics::{
49    production_metric_ids, record_gap_duration, record_im_business_event,
50    record_message_client_terminal, record_message_e2e_view_updated, record_seq_observation,
51    record_tick_stage_duration, AsyncMetricSink, BatchMetricExporter, BoundedMetricRuntime,
52    ClientTerminalObservation, LabelKey, MetricAvailability, MetricEvent, MetricExporterState,
53    MetricId, MetricKind, MetricLabel, MetricLabels, MetricRuntimeConfig, MetricRuntimeSnapshot,
54    NoopMetricSink, RecordOutcome, ShutdownOutcome, ALLOWED_LABEL_KEYS, CANARY_METRIC_IDS,
55    REQUIRED_METRIC_IDS,
56};
57pub use network::{
58    HostHeaderRegistry, HostNetworkConfig, PreparedHttpRequest, SharedHttpClient, SharedWsClient,
59    WsConnectionActivation,
60};
61pub use ops::{
62    classify_port_error, execute_storage_ops, execute_storage_ops_atomic, table_set_key,
63};
64pub use otel::{HostOtelConfig, HostOtelRuntime, HostSpanSnapshot, TraceDirection, TraceIdentity};
65pub use owned_effect::{consume_effects, OwnedEffect};
66pub use reconnect::{spawn_reconnect_supervisor, ReconnectPolicy, ReconnectTraceSink};
67pub use spawner::{BoundedSpawner, Job, Overflow};
68pub use storage::HostStorage;
69pub use tick_ingress::{
70    tick_ingress_channel, tick_ingress_channel_observed, TickIngressReceiver, TickIngressSender,
71};
72pub use timer::TimerRegistry;
73pub use trace::{
74    CommandTraceQueue, TraceCarrier, TraceCarrierError, TraceHooks, TraceHooksImpl, TraceScope,
75};
76pub use upload::SharedFileUploader;
77
78/// per-table-set Persist worker 的有界 job 队列深度上限。
79///
80/// 超过此值时 dispatch 侧 `.await` 阻塞主循环,将背压传导到 tick_tx(cap=256)。
81/// 这恢复了旧实现"磁盘慢则入站慢"的背压链,同时避免死锁(PortReply 走独立通道)。
82pub const PERSIST_QUEUE_CAP: usize = 1024;
83
84/// Http / HttpFire BoundedSpawner 的有界队列深度上限。
85///
86/// 必达 Http(Block)满时 `send().await` 把背压传导回 tick_tx;
87/// HttpFire(DropNewest)满时 try_send 失败即丢当前条目(满即丢最新来的)+ warn(自愈靠 cursor-gate 重发)。
88pub const HTTP_QUEUE_CAP: usize = 1024;