bitview_query 0.12.0

Query interface for indexed and computed Bitview data
Documentation
#[cfg(feature = "chain")]
mod addr;
#[cfg(feature = "chain")]
mod block;
#[cfg(feature = "chain")]
mod cpfp;
mod indexer;
#[cfg(feature = "chain")]
mod mempool;
#[cfg(feature = "chain")]
mod mining;
#[cfg(feature = "price")]
mod oracle;
#[cfg(feature = "price")]
mod price;
#[cfg(feature = "series")]
mod series;
#[cfg(feature = "chain")]
mod tx;
#[cfg(feature = "urpd")]
mod urpd;

#[cfg(any(feature = "chain", feature = "series", feature = "urpd"))]
use std::time::Duration;

#[cfg(any(feature = "chain", feature = "series", feature = "urpd"))]
use bitview_plugin::{Plugin, PluginReadGuard};
#[cfg(any(feature = "chain", feature = "series", feature = "urpd"))]
use brk_error::{Error, Result};

#[cfg(any(feature = "chain", feature = "series", feature = "urpd"))]
use crate::Query;

#[cfg(feature = "series")]
pub use series::ResolvedQuery;

#[cfg(any(feature = "chain", feature = "series", feature = "urpd"))]
const UPDATE_WAIT_TIMEOUT: Duration = Duration::from_secs(4);

#[cfg(any(feature = "chain", feature = "series", feature = "urpd"))]
impl Query {
    #[cfg(feature = "chain")]
    fn read_plugin(&self, plugin: &impl Plugin) -> Result<PluginReadGuard> {
        plugin
            .gate()
            .read_for(UPDATE_WAIT_TIMEOUT)
            .ok_or(Error::StateUpdating)
    }

    #[cfg(any(feature = "series", feature = "urpd"))]
    fn read_plugins(&self, plugins: &[&dyn Plugin]) -> Result<PluginReadGuard> {
        PluginReadGuard::acquire_for(plugins, UPDATE_WAIT_TIMEOUT).ok_or(Error::StateUpdating)
    }
}