Indexer

Struct Indexer 

Source
pub struct Indexer<T, U, Db>
where T: HoprIndexerRpcOperations + Send + 'static, U: ChainLogHandler + Send + 'static, Db: HoprDbGeneralModelOperations + HoprDbInfoOperations + HoprDbLogOperations + Clone + Send + Sync + 'static,
{ /* private fields */ }
Expand description

Indexer

Accepts the RPC operational functionality hopr_chain_rpc::HoprIndexerRpcOperations and provides the indexing operation resulting in and output of hopr_chain_types::chain_events::SignificantChainEvent streamed outside the indexer by the unbounded channel.

The roles of the indexer:

  1. prime the RPC endpoint
  2. request an RPC stream of changes to process
  3. process block and log stream
  4. ensure finalization by postponing processing until the head is far enough
  5. store relevant data into the DB
  6. pass the processing on to the business logic

Implementations§

Source§

impl<T, U, Db> Indexer<T, U, Db>
where T: HoprIndexerRpcOperations + Sync + Send + 'static, U: ChainLogHandler + Send + Sync + 'static, Db: HoprDbGeneralModelOperations + HoprDbInfoOperations + HoprDbLogOperations + Clone + Send + Sync + 'static,

Source

pub fn new( rpc: T, db_processor: U, db: Db, cfg: IndexerConfig, egress: Sender<SignificantChainEvent>, ) -> Self

Source

pub fn without_panic_on_completion(self) -> Self

Disables the panic on completion.

Source

pub async fn start(self) -> Result<AbortHandle>
where T: HoprIndexerRpcOperations + 'static, U: ChainLogHandler + 'static, Db: HoprDbGeneralModelOperations + HoprDbInfoOperations + HoprDbLogOperations + Clone + Send + Sync + 'static,

Source

pub async fn pre_start(&self) -> Result<()>

Source

pub async fn download_snapshot(&self) -> Result<SnapshotInfo>

Downloads and installs a database snapshot for faster initial synchronization.

This method coordinates the snapshot download process by:

  1. Validating the indexer configuration
  2. Creating a snapshot manager instance
  3. Downloading and extracting the snapshot to the data directory

Snapshots allow new nodes to quickly synchronize with the network by downloading pre-built database files instead of fetching all historical logs from scratch.

§Returns
  • Ok(SnapshotInfo) containing details about the downloaded snapshot
  • Err(CoreEthereumIndexerError::SnapshotError) if validation or download fails
§Prerequisites
  • Configuration must be valid (proper URL format, data directory set)
  • Sufficient disk space must be available
  • Network connectivity to the snapshot URL

Trait Implementations§

Source§

impl<T, U, Db> Clone for Indexer<T, U, Db>
where T: HoprIndexerRpcOperations + Send + 'static + Clone, U: ChainLogHandler + Send + 'static + Clone, Db: HoprDbGeneralModelOperations + HoprDbInfoOperations + HoprDbLogOperations + Clone + Send + Sync + 'static + Clone,

Source§

fn clone(&self) -> Indexer<T, U, Db>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T, U, Db> Debug for Indexer<T, U, Db>
where T: HoprIndexerRpcOperations + Send + 'static + Debug, U: ChainLogHandler + Send + 'static + Debug, Db: HoprDbGeneralModelOperations + HoprDbInfoOperations + HoprDbLogOperations + Clone + Send + Sync + 'static + Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T, U, Db> Freeze for Indexer<T, U, Db>
where Db: Freeze, T: Freeze, U: Freeze,

§

impl<T, U, Db> RefUnwindSafe for Indexer<T, U, Db>

§

impl<T, U, Db> Send for Indexer<T, U, Db>

§

impl<T, U, Db> Sync for Indexer<T, U, Db>
where T: Sync, U: Sync,

§

impl<T, U, Db> Unpin for Indexer<T, U, Db>
where Db: Unpin, T: Unpin, U: Unpin,

§

impl<T, U, Db> UnwindSafe for Indexer<T, U, Db>
where Db: UnwindSafe, T: UnwindSafe, U: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,