Skip to main content

hurray_io/file/
mod.rs

1pub(crate) const FILE_MAGIC: &[u8; 8] = b"HRRYFILE";
2pub(crate) const TRAILER_MAGIC: &[u8; 4] = b"HRRY";
3pub(crate) const FILE_HEADER_SIZE: u64 = 64;
4pub(crate) const TRAILER_SIZE: u64 = 40;
5pub(crate) const SUPPORTED_CONTAINER_VERSION_MAJOR: u8 = 1;
6pub(crate) const MIN_DATA_BUFFER_ALIGNMENT: u32 = 4096;
7pub(crate) const MAX_DATA_BUFFER_ALIGNMENT: u32 = 2 * 1024 * 1024;
8
9pub(crate) mod file_flags {
10    pub const HAS_KV_METADATA: u32 = 1 << 0;
11    pub const SORTED_INDEX: u32 = 1 << 1;
12    pub const HAS_INDEX_CRC32C: u32 = 1 << 2;
13    pub const RESERVED_MASK: u32 = !0x07u32;
14}
15
16mod sans_io;
17pub mod types;
18
19// Only the drivers need Tokio; the cores and the types they work on do not (ADR-041 ยง 1).
20#[cfg(feature = "tokio")]
21pub mod reader;
22#[cfg(feature = "tokio")]
23pub mod writer;
24
25pub use sans_io::{
26    flatten_composite, CompositeWrite, FileReaderCore, FileStep, FileWriteOp, FileWriterCore,
27};
28pub use types::{
29    FileComposite, FileCompositeNode, FileItem, FileTensor, FileWriterOptions, IndexEntry, KvValue,
30    DEFAULT_MAX_COMPOSITE_DEPTH,
31};
32
33#[cfg(feature = "tokio")]
34pub use reader::FileReader;
35#[cfg(feature = "tokio")]
36pub use writer::FileWriter;