ingest/
lib.rs

1//! rs-ingest
2//!
3//! This crate provides primitives for building custom ingestion engines on Futurenet using Rust.
4//! It's inspired by the [`go/ingest`](https://github.com/stellar/go/tree/master/ingest) package from the Stellar repository.
5//!
6//! Developers often require ingestion features that are outside the scope of Horizon's capabilities or
7//! need higher availability for data processing. This crate aims to cater to such needs by providing the
8//! means to build custom ingestion mechanisms tailored to specific requirements.
9//!
10//! > Note: This crate is still a work in progress. Its current capabilities are limited.
11//!
12//! > Note: Only POSIX systems are currently supported.
13//!
14//! # Features
15//!
16//! The crate offers the following features:
17//!
18//! ## Running Offline
19//! Running offline involves replaying historical data through a catchup process. This crate supports two offline modes:
20//!
21//! - Single-thread mode: Waits for the core subprocess to finish catching up and allows retrieval of ledger metadata.
22//! - Multi-thread mode: Returns a `Receiver<MetaResult>` that receives newly decoded ledger metadata as it becomes available.
23//!
24//! ## Running Online
25//! Running online involves syncing with Futurenet and receiving ledger close metadata in real-time. This mode is useful for
26//! tasks requiring real-time data ingestion, such as event streaming.
27//!
28//! > Note: Currently, online mode only supports multi-threaded execution.
29//!
30//! To learn more about the crate and check out a couple of examples see the [README](https://github.com/xycloo/rs-ingest/blob/main/README.md)
31//!
32
33mod buffered_ledger_meta_reader;
34mod captive_core;
35mod core_runner;
36mod ingestion_config;
37mod toml;
38mod reader;
39
40pub use buffered_ledger_meta_reader::*;
41pub use captive_core::*;
42pub use core_runner::*;
43pub use ingestion_config::*;
44pub use reader::*;