oxigdal_streaming/lib.rs
1//! Real-time data processing and streaming pipelines for OxiGDAL.
2//!
3//! This crate provides a comprehensive streaming framework for processing
4//! geospatial data in real-time. It includes:
5//!
6//! - Stream traits and abstractions with backpressure handling
7//! - Windowing and watermarking for event-time processing
8//! - Rich set of transformations (map, filter, join, etc.)
9//! - Stateful operations with checkpointing
10//! - State backends (Pure-Rust LSM via OxiStore/fjall) for fault tolerance
11//!
12//! # Example
13//!
14//! ```no_run
15//! # #[cfg(feature = "std")]
16//! use oxigdal_streaming::core::Stream;
17//!
18//! # async fn example() -> oxigdal_streaming::error::Result<()> {
19//! // Create a stream and apply transformations
20//! // let stream = Stream::new();
21//! // let transformed = stream.map(|x| x * 2).filter(|x| x > 10);
22//! # Ok(())
23//! # }
24//! ```
25
26#![cfg_attr(not(feature = "std"), no_std)]
27#![warn(missing_docs)]
28#![deny(unsafe_code)]
29
30// When no_std is active, bring in alloc for heap allocation (Vec, String, etc.)
31#[cfg(not(feature = "std"))]
32extern crate alloc;
33
34// All modules require std (async runtimes, I/O, Arrow, etc.)
35#[cfg(feature = "std")]
36pub mod arrow_ipc;
37#[cfg(feature = "std")]
38pub mod cloud;
39#[cfg(feature = "std")]
40pub mod core;
41pub mod error;
42#[cfg(feature = "std")]
43pub mod io;
44#[cfg(feature = "std")]
45pub mod io_coalescing;
46#[cfg(feature = "std")]
47pub mod metrics;
48#[cfg(feature = "std")]
49pub mod mmap;
50#[cfg(feature = "std")]
51pub mod pipeline;
52// Raster streaming requires the GeoTIFF driver; gated on `raster-streaming`
53// which is normally enabled by `std` but can be disabled for leaner builds.
54#[cfg(feature = "raster-streaming")]
55pub mod raster;
56#[cfg(feature = "std")]
57pub mod state;
58#[cfg(feature = "std")]
59pub mod tile;
60#[cfg(feature = "std")]
61pub mod transformations;
62#[cfg(feature = "std")]
63pub mod v2;
64#[cfg(feature = "std")]
65pub mod windowing;
66
67pub use error::{Result, StreamingError};