Skip to main content

EntropySender

Struct EntropySender 

Source
pub struct EntropySender;
Expand description

Entropy sender driver.

Operationally, calling run spawns a tokio task that performs one push and then exits.

§Examples

use std::path::PathBuf;
use std::sync::Arc;
use dynomite::entropy::{
    EntropyConfig, EntropySender, RedisLocalSnapshot,
};

let cfg = EntropyConfig {
    key_file: PathBuf::from("conf/recon_key.pem"),
    iv_file: PathBuf::from("conf/recon_iv.pem"),
    listen_addr: "127.0.0.1:8105".parse().unwrap(),
    send_addr: None,
    peer_endpoint: "127.0.0.1:8105".parse().unwrap(),
    buffer_size: 16 * 1024,
    header_size: 1024,
    encrypt: true,
};
let source = Arc::new(RedisLocalSnapshot::default());
let handle = EntropySender::run(cfg, source);
handle.await.unwrap().unwrap();

Implementations§

Source§

impl EntropySender

Source

pub fn run( cfg: EntropyConfig, source: BoxedSnapshotSource, ) -> JoinHandle<EntropyResult<usize>>

Spawn a tokio task that performs one snapshot push.

The returned JoinHandle resolves to the push result. The task uses cfg.peer_endpoint to dial the receiver and cfg.send_addr (when set) for the local bind.

Source

pub async fn push( cfg: EntropyConfig, source: BoxedSnapshotSource, ) -> EntropyResult<usize>

Perform one snapshot push and return the number of plaintext bytes transferred. Used directly by tests; the spawned variant just calls this on a tokio task.

§Errors

Forwards anything from key loading, source acquisition, dialing, or transport.

Source

pub async fn push_with_material( cfg: EntropyConfig, source: BoxedSnapshotSource, override_material: Option<EntropyMaterial>, ) -> EntropyResult<usize>

Perform one snapshot push using a pre-loaded EntropyMaterial.

When override_material is None and cfg.encrypt is set, key + IV bytes are loaded from cfg.key_file / cfg.iv_file (the historical behaviour). When override_material is Some(_), the supplied material is used verbatim and the on-disk paths are not touched. The override is consumed by the crate::entropy::driver::EntropyDriver run loop, which loads the AES material once at startup and drives many cycles from the same handle.

§Errors

Forwards anything from key loading (when no override is supplied), source acquisition, dialing, or transport.

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

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

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

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> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,