pub enum MetaPacketRouting<'a, S: SphinxSuite, H: SphinxHeaderSpec> {
ForwardPath {
shared_keys: SharedKeys<S::E, S::G>,
forward_path: &'a [<S::P as Keypair>::Public],
additional_data_relayer: &'a [H::RelayerData],
receiver_data: &'a H::PacketReceiverData,
no_ack: bool,
},
Surb(SURB<S, H>, &'a H::PacketReceiverData),
}
Expand description
Describes how a MetaPacket
should be routed to the destination.
Variants§
ForwardPath
Uses an explicitly given path to deliver the packet.
Fields
Shared keys with individual hops
§
forward_path: &'a [<S::P as Keypair>::Public]
Public keys on the path corresponding to the shared keys
§
additional_data_relayer: &'a [H::RelayerData]
Additional data for individual relayers
§
receiver_data: &'a H::PacketReceiverData
Additional data delivered to the packet’s final recipient.
Surb(SURB<S, H>, &'a H::PacketReceiverData)
Uses a SURB to deliver the packet and some additional data to the SURB’s creator.
Auto Trait Implementations§
impl<'a, S, H> Freeze for MetaPacketRouting<'a, S, H>where
<H as SphinxHeaderSpec>::KeyId: Freeze,
<H as SphinxHeaderSpec>::SurbReceiverData: Freeze,
<<<S as SphinxSuite>::G as GroupElement<<S as SphinxSuite>::E>>::AlphaLen as ArrayLength>::ArrayType<u8>: Freeze,
impl<'a, S, H> RefUnwindSafe for MetaPacketRouting<'a, S, H>where
<H as SphinxHeaderSpec>::PacketReceiverData: RefUnwindSafe,
<H as SphinxHeaderSpec>::KeyId: RefUnwindSafe,
<H as SphinxHeaderSpec>::SurbReceiverData: RefUnwindSafe,
<<<S as SphinxSuite>::G as GroupElement<<S as SphinxSuite>::E>>::AlphaLen as ArrayLength>::ArrayType<u8>: RefUnwindSafe,
<<S as SphinxSuite>::P as Keypair>::Public: RefUnwindSafe,
<H as SphinxHeaderSpec>::RelayerData: RefUnwindSafe,
<S as SphinxSuite>::E: RefUnwindSafe,
<S as SphinxSuite>::G: RefUnwindSafe,
H: RefUnwindSafe,
impl<'a, S, H> Send for MetaPacketRouting<'a, S, H>where
<H as SphinxHeaderSpec>::PacketReceiverData: Sync,
<H as SphinxHeaderSpec>::KeyId: Send,
<H as SphinxHeaderSpec>::SurbReceiverData: Send,
<<S as SphinxSuite>::P as Keypair>::Public: Sync,
<H as SphinxHeaderSpec>::RelayerData: Sync,
<S as SphinxSuite>::E: Send,
<S as SphinxSuite>::G: Send,
H: Send,
impl<'a, S, H> Sync for MetaPacketRouting<'a, S, H>where
<H as SphinxHeaderSpec>::PacketReceiverData: Sync,
<H as SphinxHeaderSpec>::KeyId: Sync,
<H as SphinxHeaderSpec>::SurbReceiverData: Sync,
<<S as SphinxSuite>::P as Keypair>::Public: Sync,
<H as SphinxHeaderSpec>::RelayerData: Sync,
<S as SphinxSuite>::E: Sync,
<S as SphinxSuite>::G: Sync,
H: Sync,
impl<'a, S, H> Unpin for MetaPacketRouting<'a, S, H>where
<H as SphinxHeaderSpec>::KeyId: Unpin,
<H as SphinxHeaderSpec>::SurbReceiverData: Unpin,
<<<S as SphinxSuite>::G as GroupElement<<S as SphinxSuite>::E>>::AlphaLen as ArrayLength>::ArrayType<u8>: Unpin,
<S as SphinxSuite>::E: Unpin,
<S as SphinxSuite>::G: Unpin,
H: Unpin,
impl<'a, S, H> UnwindSafe for MetaPacketRouting<'a, S, H>where
<H as SphinxHeaderSpec>::PacketReceiverData: RefUnwindSafe,
<H as SphinxHeaderSpec>::KeyId: UnwindSafe,
<H as SphinxHeaderSpec>::SurbReceiverData: UnwindSafe,
<<<S as SphinxSuite>::G as GroupElement<<S as SphinxSuite>::E>>::AlphaLen as ArrayLength>::ArrayType<u8>: UnwindSafe,
<<S as SphinxSuite>::P as Keypair>::Public: RefUnwindSafe,
<H as SphinxHeaderSpec>::RelayerData: RefUnwindSafe,
<S as SphinxSuite>::E: UnwindSafe,
<S as SphinxSuite>::G: UnwindSafe,
H: UnwindSafe,
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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