HoprNodeDb

Struct HoprNodeDb 

Source
pub struct HoprNodeDb { /* private fields */ }

Implementations§

Source§

impl HoprNodeDb

Source

pub async fn new( directory: &Path, chain_key: ChainKeypair, cfg: HoprNodeDbConfig, ) -> Result<Self, NodeDbError>

Source

pub async fn new_in_memory(chain_key: ChainKeypair) -> Result<Self, NodeDbError>

Source

pub async fn invalidate_unrealized_value(&self, channel: &ChannelEntry)

Source

pub fn config(&self) -> &HoprNodeDbConfig

Source§

impl HoprNodeDb

Source

pub async fn upsert_ticket( &self, acknowledged_ticket: AcknowledgedTicket, ) -> Result<(), NodeDbError>

Used only by non-SQLite code and tests.

Source§

impl HoprNodeDb

Source

pub fn start_ticket_processing<S>( &self, ticket_notifier: Option<S>, ) -> Result<(), NodeDbError>
where S: Sink<AcknowledgedTicket> + Send + 'static, S::Error: Display + Error,

Starts ticket processing by the TicketManager with an optional new ticket notifier. Without calling this method, tickets will not be persisted into the DB.

If the notifier is given, it will receive notifications once a new ticket has been persisted into the Tickets DB.

Trait Implementations§

Source§

impl Clone for HoprNodeDb

Source§

fn clone(&self) -> HoprNodeDb

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 HoprDbPeersOperations for HoprNodeDb

Source§

type Error = NodeDbError

Source§

fn add_network_peer<'life0, 'life1, 'async_trait>( &'life0 self, peer: &'life1 PeerId, origin: PeerOrigin, mas: Vec<Multiaddr>, backoff: f64, quality_window: u32, ) -> Pin<Box<dyn Future<Output = Result<(), NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Adds a peer to the backend. Read more
Source§

fn remove_network_peer<'life0, 'life1, 'async_trait>( &'life0 self, peer: &'life1 PeerId, ) -> Pin<Box<dyn Future<Output = Result<(), NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Removes the peer from the backend. Read more
Source§

fn update_network_peer<'life0, 'async_trait>( &'life0 self, new_status: PeerStatus, ) -> Pin<Box<dyn Future<Output = Result<(), NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Updates stored information about the peer. Should fail if the peer does not exist in the store.
Source§

fn get_network_peer<'life0, 'life1, 'async_trait>( &'life0 self, peer: &'life1 PeerId, ) -> Pin<Box<dyn Future<Output = Result<Option<PeerStatus>, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets stored information about the peer. Read more
Source§

fn get_network_peers<'a, 'async_trait>( &'a self, selector: PeerSelector, sort_last_seen_asc: bool, ) -> Pin<Box<dyn Future<Output = Result<BoxStream<'a, PeerStatus>, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'a: 'async_trait,

Returns a stream of all stored peers, optionally matching the given PeerSelector filter. Read more
Source§

fn network_peer_stats<'life0, 'async_trait>( &'life0 self, quality_threshold: f64, ) -> Pin<Box<dyn Future<Output = Result<Stats, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Returns the statistics on the stored peers.
Source§

impl HoprDbProtocolOperations for HoprNodeDb

Source§

type Error = NodeDbError

Source§

fn handle_acknowledgement<'life0, 'life1, 'async_trait, R>( &'life0 self, ack: VerifiedAcknowledgement, resolver: &'life1 R, ) -> Pin<Box<dyn Future<Output = Result<(), NodeDbError>> + Send + 'async_trait>>
where R: ChainReadChannelOperations + ChainValues + Send + Sync + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Processes the acknowledgements for the pending tickets Read more
Source§

fn find_surb<'life0, 'async_trait>( &'life0 self, matcher: SurbMatcher, ) -> Pin<Box<dyn Future<Output = Result<FoundSurb, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Attempts to find SURB and its ID given the SurbMatcher.
Source§

fn get_surb_config(&self) -> SurbCacheConfig

Returns the SURB cache configuration.
Source§

fn to_send_no_ack<'life0, 'life1, 'async_trait, R>( &'life0 self, data: Box<[u8]>, destination: OffchainPublicKey, resolver: &'life1 R, ) -> Pin<Box<dyn Future<Output = Result<OutgoingPacket, NodeDbError>> + Send + 'async_trait>>
where R: ChainKeyOperations + ChainValues + Send + Sync + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Process the data into an outgoing packet that is not going to be acknowledged.
Source§

fn to_send<'life0, 'life1, 'async_trait, R>( &'life0 self, data: Box<[u8]>, routing: ResolvedTransportRouting, outgoing_ticket_win_prob: Option<WinningProbability>, outgoing_ticket_price: Option<HoprBalance>, signals: PacketSignals, resolver: &'life1 R, ) -> Pin<Box<dyn Future<Output = Result<OutgoingPacket, NodeDbError>> + Send + 'async_trait>>
where R: ChainReadChannelOperations + ChainKeyOperations + ChainValues + Send + Sync + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Process the data into an outgoing packet
Source§

fn from_recv<'life0, 'life1, 'life2, 'async_trait, R>( &'life0 self, data: Box<[u8]>, pkt_keypair: &'life1 OffchainKeypair, sender: OffchainPublicKey, outgoing_ticket_win_prob: Option<WinningProbability>, outgoing_ticket_price: Option<HoprBalance>, resolver: &'life2 R, ) -> Pin<Box<dyn Future<Output = Result<IncomingPacket, IncomingPacketError<NodeDbError>>> + Send + 'async_trait>>
where R: ChainReadChannelOperations + ChainKeyOperations + ChainValues + Send + Sync + 'async_trait, Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Process the incoming packet into data
Source§

impl HoprDbTicketOperations for HoprNodeDb

Source§

type Error = NodeDbError

Source§

fn stream_tickets<'c, 'async_trait>( &'c self, selector: Option<TicketSelector>, ) -> Pin<Box<dyn Future<Output = Result<BoxStream<'c, AcknowledgedTicket>, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'c: 'async_trait,

Retrieve acknowledged winning tickets, according to the given selector. Read more
Source§

fn mark_tickets_as<'life0, 'async_trait>( &'life0 self, selector: TicketSelector, mark_as: TicketMarker, ) -> Pin<Box<dyn Future<Output = Result<usize, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Marks tickets as the given TicketMarker, removing them from the DB and updating the ticket statistics for each ticket’s channel. Read more
Source§

fn mark_unsaved_ticket_rejected<'life0, 'life1, 'async_trait>( &'life0 self, ticket: &'life1 Ticket, ) -> Pin<Box<dyn Future<Output = Result<(), NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Updates the ticket statistics according to the fact that the given ticket has been rejected by the packet processing pipeline. Read more
Source§

fn update_ticket_states_and_fetch<'a, 'async_trait>( &'a self, selector: TicketSelector, new_state: AcknowledgedTicketStatus, ) -> Pin<Box<dyn Future<Output = Result<BoxStream<'a, AcknowledgedTicket>, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'a: 'async_trait,

Updates state of the tickets matching the given selector. Read more
Source§

fn update_ticket_states<'life0, 'async_trait>( &'life0 self, selector: TicketSelector, new_state: AcknowledgedTicketStatus, ) -> Pin<Box<dyn Future<Output = Result<usize, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Updates state of the tickets matching the given selector.
Source§

fn get_ticket_statistics<'life0, 'async_trait>( &'life0 self, channel_id: Option<Hash>, ) -> Pin<Box<dyn Future<Output = Result<ChannelTicketStatistics, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Retrieves the ticket statistics for the given channel. Read more
Source§

fn reset_ticket_statistics<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Resets the ticket statistics about neglected, rejected, and redeemed tickets.
Source§

fn get_tickets_value<'life0, 'async_trait>( &'life0 self, selector: TicketSelector, ) -> Pin<Box<dyn Future<Output = Result<(usize, HoprBalance), NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Counts the tickets matching the given selector and their total value. Read more
Source§

fn compare_and_set_outgoing_ticket_index<'life0, 'async_trait>( &'life0 self, channel_id: Hash, index: u64, ) -> Pin<Box<dyn Future<Output = Result<u64, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Sets the stored outgoing ticket index to index, only if the currently stored value is less than index. This ensures the stored value can only be growing. Read more
Source§

fn reset_outgoing_ticket_index<'life0, 'async_trait>( &'life0 self, channel_id: Hash, ) -> Pin<Box<dyn Future<Output = Result<u64, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Resets the outgoing ticket index to 0 for the given channel id. Read more
Source§

fn increment_outgoing_ticket_index<'life0, 'async_trait>( &'life0 self, channel_id: Hash, ) -> Pin<Box<dyn Future<Output = Result<u64, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Increments the outgoing ticket index in the given channel ID and returns the value before incrementing. Read more
Source§

fn get_outgoing_ticket_index<'life0, 'async_trait>( &'life0 self, channel_id: Hash, ) -> Pin<Box<dyn Future<Output = Result<Arc<AtomicU64>, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Gets the current outgoing ticket index for the given channel id. Read more
Source§

fn persist_outgoing_ticket_indices<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<usize, NodeDbError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Compares outgoing ticket indices in the cache with the stored values and updates the stored value where changed. Read more

Auto Trait Implementations§

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,