Skip to main content

cu29_logstream/
lib.rs

1#![cfg_attr(not(feature = "std"), no_std)]
2
3//! Transport-independent Copper log framing and continuous-stream recovery.
4//!
5//! The crate owns bounded FEC, pacing, and autonomous recovery repetition above
6//! packet transports. The host driver consumes encoded records from existing
7//! semantic output workers; runtime ownership handoff stays outside this layer.
8
9extern crate alloc;
10
11pub use cu_fec::{DensityThreshold, EncodingSymbolId, Field, RlcConfig};
12
13#[cfg(feature = "std")]
14mod archive;
15#[cfg(feature = "std")]
16pub use archive::{CaptureArchive, NativeArchive};
17#[cfg(feature = "std")]
18pub mod twin;
19#[cfg(feature = "std")]
20mod twin_session;
21#[cfg(feature = "std")]
22pub use twin_session::{
23    CuTwin, CuTwinBuilder, CuTwinLogReader, CuTwinReader, CuTwinRecordingState, CuTwinStatus,
24    ReceivedStructuredLog,
25};
26
27/// Bounded ground-side delivery to caller-owned telemetry consumers.
28#[cfg(feature = "std")]
29pub mod telemetry;
30
31pub mod capture;
32mod copper;
33mod error;
34pub mod feedback;
35mod manifest;
36mod object;
37mod pacing;
38mod record;
39mod recovery;
40mod rlc;
41mod router;
42mod sender;
43mod stream;
44#[cfg(feature = "std")]
45pub mod structured;
46mod wire;
47#[cfg(feature = "std")]
48mod worker;
49#[cfg(feature = "std")]
50pub use structured::StructuredLogStream;
51#[cfg(feature = "std")]
52pub use worker::{
53    ScheduledCopperListSink, ScheduledKeyFrameSink, ScheduledStructuredLogSink, SenderMonitor,
54    SenderSnapshot, scheduled_feedback_sinks, scheduled_sinks,
55};
56
57/// Utilities for testing log streaming over unreliable datagram links.
58///
59/// This module is not part of the normal runtime API and is available only
60/// with the `test-utils` feature.
61#[cfg(feature = "test-utils")]
62pub mod test_support;
63
64pub use copper::{decode_copperlist, encode_copperlist, encode_copperlist_record_into};
65pub use error::{Error, Result};
66#[cfg(feature = "std")]
67pub use manifest::new_session_id;
68pub use manifest::{
69    ApplicationOutputSchema, ApplicationSchema, LogStreamPlan, ReceiverRequirements,
70    ResolvedContinuousFec, ResolvedObjectFec, ResolvedRlcField, SessionManifest,
71};
72pub use object::{
73    FiniteObjectDecoder, FiniteObjectEncoder, FiniteObjectLimits, FiniteObjectRecoveryStats,
74    FiniteObjectSenderConfig,
75};
76pub use pacing::{PacingConfig, RECOVERY_REPEAT_INTERVAL, SenderCore, SenderStats};
77pub use record::{DecodedRecord, RecordKind, decode_record, encode_record};
78pub use recovery::{
79    RecoveryPoint, decode_keyframe, decode_recovery_point, encode_keyframe,
80    encode_keyframe_and_recovery_point, encode_recovery_point,
81};
82pub use rlc::{
83    ContinuousDecoder, ContinuousEncoder, ContinuousReceiveEvent, ContinuousRecoveryStats,
84    CopperListGap, GapReason, ReceiveError, ReceiverLimits, ReceiverOccupancy, RecoveredRecord,
85    StreamIdentity,
86};
87pub use router::{
88    ReceivedManifest, SessionEvent, SessionEventRef, SessionRouter, SessionRouterLimits,
89    SessionRouterStats,
90};
91pub use sender::{
92    ContinuousCopperListSink, ContinuousSenderConfig, ContinuousSenderStats,
93    DEFAULT_MAX_SYMBOL_SIZE, DEFAULT_MAX_WINDOW_SYMBOLS, DefaultContinuousCopperListSink,
94    LogStreamSenderConfig, RecoveryPointSink, RecoverySenderConfig, RecoverySenderStats,
95};
96pub use stream::{
97    CuFeedbackRx, CuFeedbackTx, CuStreamRx, CuStreamRxError, CuStreamTx, CuStreamTxError, OneWay,
98    SeparateFeedback,
99};
100pub use wire::{
101    FecScheme, FecSymbolKind, Lane, PACKET_HEADER_LEN, WireHeader, WirePacket, WirePacketRef,
102    encode_packet_into,
103};