#xyz #fetcher #finality #handler #neardata #seq-cst

fastnear-neardata-fetcher

This crate provides a fetcher to retrieve data from neardata.xyz

8 releases (4 breaking)

new 0.30.1 May 2, 2025
0.30.0-rc.1 Apr 15, 2025
0.3.1 Apr 4, 2025
0.3.0 Mar 28, 2025
0.0.2 Jul 9, 2024

#532 in Authentication

Download history 2/week @ 2025-02-05 141/week @ 2025-02-19 18/week @ 2025-02-26 109/week @ 2025-03-05 49/week @ 2025-03-12 5/week @ 2025-03-19 149/week @ 2025-03-26 144/week @ 2025-04-02 62/week @ 2025-04-09 91/week @ 2025-04-16 9/week @ 2025-04-23

318 downloads per month
Used in inindexer

MIT/Apache

48KB
696 lines

fastnear-neardata-fetcher

This crate provides a fetcher to retrieve data from neardata.xyz

Handle ctrl-c signal to stop the fetcher.

pub fn running() -> Arc<AtomicBool> {
    let is_running = Arc::new(AtomicBool::new(true));
    let ctrl_c_running = is_running.clone();

    ctrlc::set_handler(move || {
        ctrl_c_running.store(false, Ordering::SeqCst);
        println!("Received Ctrl+C, starting shutdown...");
    })
        .expect("Error setting Ctrl+C handler");

    is_running
}

Configure the fetcher using FetcherConfigBuilder, e.g.

pub fn fetcher_config() -> fetcher::FetcherConfig {
    let mut fetcher_config_builder = fetcher::FetcherConfigBuilder::new()
        .num_threads(num_threads.parse::<u64>().unwrap())
        .chain_id(chain_id)
        .finality(finality);
    if !auth_bearer_token.is_empty() {
        fetcher_config_builder = fetcher_config_builder.auth_bearer_token(auth_bearer_token);
    }
    fetcher_config_builder.build()
}

Create a channel, and start a fetcher:

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let (sender, receiver) = mpsc::channel(100);
    tokio::spawn(fetcher::start_fetcher(fetcher_config(), sender, running()));

    listen_blocks(receiver).await;
}

See examples for more details.

Dependencies

~26–41MB
~658K SLoC