journal_registry/lib.rs
1//! Journal file registry and repository
2//!
3//! This crate provides functionality for discovering, tracking, and monitoring
4//! systemd journal files in directories.
5//!
6//! ## Key Components
7//!
8//! - **Repository**: Types for representing journal files and organizing them into chains
9//! - **Registry**: High-level interface for watching directories and tracking file changes
10//!
11//! ## Usage
12//!
13//! ```no_run
14//! use journal_registry::{Registry, Monitor};
15//! use journal_common::Seconds;
16//!
17//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
18//! let (monitor, mut event_receiver) = Monitor::new()?;
19//! let registry = Registry::new(monitor);
20//!
21//! // Watch a directory for journal files
22//! registry.watch_directory("/var/log/journal")?;
23//!
24//! // Process file system events in background
25//! let registry_clone = registry.clone();
26//! tokio::spawn(async move {
27//! while let Some(event) = event_receiver.recv().await {
28//! if let Err(e) = registry_clone.process_event(event) {
29//! eprintln!("Error processing event: {}", e);
30//! }
31//! }
32//! });
33//!
34//! // Find files in a time range (seconds since epoch)
35//! let files = registry.find_files_in_range(Seconds(1000000), Seconds(2000000))?;
36//! # Ok(())
37//! # }
38//! ```
39
40pub mod registry;
41pub mod repository;
42pub mod time_range;
43
44pub use registry::{Monitor, Registry, RegistryError};
45pub use repository::{File, FileInfo, Origin, Source, Status};
46pub use time_range::TimeRange;