1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//! [`StorageSource`]: the storage analogue of `crate::net::NetworkSource`.
//!
//! Any storage backend (file, io_uring, SPDK) must implement this trait.
//! The pipeline treats all backends identically — only the configuration and
//! the feature gate differ.
//!
//! ## Relationship to [`Source`][crate::core::Source]
//!
//! [`Source`][crate::core::Source] is the core **raw-bytes** trait
//! (`poll() -> Option<&[u8]>`). `StorageSource` is the batch-oriented
//! storage surface: it fills a [`RawRecordBatch`] with framed raw records
//! that a [`Decoder`][crate::core::Decoder] later turns into typed messages.
//! This separation keeps each layer independently testable.
use crate;
use crateRawRecordBatch;
/// A batch-pull source backed by persistent storage.
///
/// Implementations must also implement [`Lifecycle`], which provides
/// `init` and `shutdown` hooks.