pub struct NoisyDecoyProvider<T: IdentityType + Clone + 'static, AE: AsyncExecutor + 'static> { /* private fields */ }Expand description
Noisy mode implements sending smaller decoy packets in bursts often.
Trait Implementations§
Source§impl<T: IdentityType + Clone, AE: AsyncExecutor> DecoyCommunicationMode<T, AE> for NoisyDecoyProvider<T, AE>
impl<T: IdentityType + Clone, AE: AsyncExecutor> DecoyCommunicationMode<T, AE> for NoisyDecoyProvider<T, AE>
Source§fn new(
manager: Weak<dyn DecoyFlowSender>,
settings: Arc<Settings<AE>>,
identity: DerivedValue<T>,
counter: Arc<AtomicU32>,
fallthrough_probability: Option<f64>,
) -> Self
fn new( manager: Weak<dyn DecoyFlowSender>, settings: Arc<Settings<AE>>, identity: DerivedValue<T>, counter: Arc<AtomicU32>, fallthrough_probability: Option<f64>, ) -> Self
Create a new decoy provider;
counter is the per-session monotonic packet-number
counter shared with the session manager and the health-check provider; every emitted
decoy packet advances it. fallthrough_probability pins the per-flow fallthrough rate,
None samples from the settings keys.Source§impl<T: IdentityType + Clone + 'static, AE: AsyncExecutor + 'static> DecoyProvider for NoisyDecoyProvider<T, AE>
impl<T: IdentityType + Clone + 'static, AE: AsyncExecutor + 'static> DecoyProvider for NoisyDecoyProvider<T, AE>
Source§fn name(&self) -> &'static str
fn name(&self) -> &'static str
Short display name of this provider (e.g. “SparseDecoyProvider”).
Source§fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn start<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Start the background decoy generation timer.
Source§fn feed_input<'life0, 'async_trait>(
&'life0 self,
packet: DynamicByteBuffer,
_tailer_buf: DynamicByteBuffer,
) -> Pin<Box<dyn Future<Output = Option<DynamicByteBuffer>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn feed_input<'life0, 'async_trait>(
&'life0 self,
packet: DynamicByteBuffer,
_tailer_buf: DynamicByteBuffer,
) -> Pin<Box<dyn Future<Output = Option<DynamicByteBuffer>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Process an incoming packet, updating internal rate tracking.
tailer_buf is the deobfuscated tailer for the packet (flags, packet number, etc.).Source§fn feed_output<'life0, 'async_trait>(
&'life0 self,
body: DynamicByteBuffer,
tailer_buf: DynamicByteBuffer,
) -> Pin<Box<dyn Future<Output = Option<DynamicByteBuffer>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn feed_output<'life0, 'async_trait>(
&'life0 self,
body: DynamicByteBuffer,
tailer_buf: DynamicByteBuffer,
) -> Pin<Box<dyn Future<Output = Option<DynamicByteBuffer>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Process an outgoing packet body and its plaintext tailer, updating internal rate tracking.
Returns the (possibly modified) body, or
None to suppress the packet entirely.Auto Trait Implementations§
impl<T, AE> !RefUnwindSafe for NoisyDecoyProvider<T, AE>
impl<T, AE> !UnwindSafe for NoisyDecoyProvider<T, AE>
impl<T, AE> Freeze for NoisyDecoyProvider<T, AE>
impl<T, AE> Send for NoisyDecoyProvider<T, AE>
impl<T, AE> Sync for NoisyDecoyProvider<T, AE>
impl<T, AE> Unpin for NoisyDecoyProvider<T, AE>
impl<T, AE> UnsafeUnpin for NoisyDecoyProvider<T, AE>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more