Expand description
Event-driven data loader orchestrator. Generic event-driven data loader.
DataLoader is the central orchestrator that connects a DataSource to
one or more EventSinks. It handles:
- Source → fan-out task → per-sink tasks pipeline
- Bounded channels for backpressure
- Graceful shutdown via
CancellationToken - Error propagation
§Example
ⓘ
use tradingview::loader::DataLoader;
use tradingview::sink::{ChannelSink, CallbackSink};
use tradingview::source::tradingview::TradingViewSource;
let (channel_sink, mut rx) = ChannelSink::new(1024);
let mut loader = DataLoader::builder()
.source(TradingViewSource::new())
.sink(channel_sink)
.sink(CallbackSink::new("debug", |events| async move {
for event in &events {
tracing::debug!("{:?}", event);
}
Ok(())
}))
.build()?;
loader.start().await?;
// ... events flow ...
loader.shutdown().await?;Structs§
- Data
Loader - Event-driven data loader — connects a source to multiple sinks.
- Data
Loader Builder - Builder for
DataLoader. - Loader
Config - Configuration for the data loader.