1
0
Fork 0
mirror of https://github.com/romanz/electrs.git synced 2025-02-24 06:57:53 +01:00
electrs/examples/bench_parse.rs

43 lines
1 KiB
Rust
Raw Normal View History

extern crate bitcoin;
extern crate electrs;
#[macro_use]
extern crate log;
#[macro_use]
extern crate error_chain;
use electrs::{config::Config,
daemon::Daemon,
errors::*,
metrics::Metrics,
2018-06-25 10:46:30 +03:00
parse::parser,
signal::Waiter,
2018-06-25 10:46:30 +03:00
store::{DBStore, StoreOptions, WriteStore}};
use error_chain::ChainedError;
fn run(config: Config) -> Result<()> {
let signal = Waiter::new();
let metrics = Metrics::new(config.monitoring_addr);
metrics.start();
let daemon = Daemon::new(config.network_type, &metrics)?;
let store = DBStore::open("./test-db", StoreOptions { bulk_import: true });
2018-06-25 10:46:30 +03:00
let chan = parser(&daemon, &store, &metrics)?;
for rows in chan.iter() {
if let Some(sig) = signal.poll() {
bail!("indexing interrupted by SIG{:?}", sig);
}
store.write(rows?);
}
2018-06-23 23:17:59 +03:00
debug!("done");
Ok(())
}
fn main() {
if let Err(e) = run(Config::from_args()) {
eprintln!("{}", e.display_chain());
}
}