pcapsql_core/io/
mod.rs

1//! Packet I/O abstractions.
2//!
3//! This module provides traits and implementations for reading packets from
4//! various sources (files, memory-mapped files, network streams, etc.)
5//!
6//! ## Design
7//!
8//! The module uses generics with associated types for zero-vtable hot path:
9//! - [`PacketSource`] trait with associated `Reader` type
10//! - [`PacketReader`] trait for sequential reading
11//! - Type erasure happens only at DataFusion boundaries
12//!
13//! ## Available Sources
14//!
15//! - [`FilePacketSource`] - Standard buffered file I/O (works with all file types)
16//! - [`MmapPacketSource`] - Memory-mapped I/O for PCAP/PCAPNG files (requires `mmap` feature)
17//! - [`CloudPacketSource`] - Cloud storage I/O for S3, GCS, Azure (requires `cloud` feature)
18//!
19//! ## Compression Support
20//!
21//! Both sources support transparent decompression of compressed files.
22//! Supported formats (via feature flags):
23//! - Gzip (.gz) - always enabled
24//! - Zstd (.zst) - `compress-zstd` feature
25//! - LZ4 (.lz4) - `compress-lz4` feature
26//! - Bzip2 (.bz2) - `compress-bzip2` feature
27//! - XZ (.xz) - `compress-xz` feature
28
29#[cfg(feature = "cloud")]
30mod cloud;
31mod decompress;
32#[cfg(feature = "mmap")]
33mod mmap;
34mod pcap_stream;
35mod source;
36
37pub use decompress::{decompress_header, Compression, DecompressReader, FileDecoder};
38#[cfg(feature = "mmap")]
39pub use decompress::{AnyDecoder, MmapSlice};
40#[cfg(feature = "mmap")]
41pub use mmap::{MmapPacketReader, MmapPacketSource};
42pub use pcap_stream::{GenericPcapReader, PcapFormat};
43pub use source::{
44    FilePacketReader, FilePacketSource, PacketPosition, PacketRange, PacketReader, PacketRef,
45    PacketSource, PacketSourceMetadata, RawPacket,
46};
47
48#[cfg(feature = "cloud")]
49pub use cloud::{
50    is_cloud_url, CloudLocation, CloudPacketReader, CloudPacketSource, ObjectStoreReader,
51};