pub struct FunnelManager { /* private fields */ }Expand description
Owns the node’s Funnel ingress data path: the TlsAcceptor built from the node’s *.ts.net
cert and the pump task that TLS-terminates each hijacked IngressConn.
Built by Device::listen_funnel after the funnel_access gate and
cert path pass. Holds the sink end so the manager keeps the channel (and thus the route) alive;
dropping the manager closes the sink and stops the pump. Registered on the device (mirroring
serve: Mutex<Option<ServeManager>>) so its lifetime is tied to the Device.
Implementations§
Source§impl FunnelManager
impl FunnelManager
Sourcepub fn new(
acceptor: TlsAcceptor,
) -> (Self, FunnelIngressSink, FunnelAcceptedReceiver)
pub fn new( acceptor: TlsAcceptor, ) -> (Self, FunnelIngressSink, FunnelAcceptedReceiver)
Build a manager from the node’s acceptor (made from its *.ts.net cert), returning the
manager, the FunnelIngressSink to install into the peerAPI FunnelIngressSlot, and the
FunnelAcceptedReceiver handed back to the embedder.
Spawns the pump task: for each hijacked IngressConn it TLS-terminates the raw overlay
stream with acceptor and forwards a FunnelAccepted to the embedder. A TLS handshake
failure drops that connection (fail-closed, logged) and the pump continues. The pump ends when
the sink is dropped (manager dropped) or the embedder drops the receiver.
Trait Implementations§
Source§impl Drop for FunnelManager
impl Drop for FunnelManager
Auto Trait Implementations§
impl Freeze for FunnelManager
impl RefUnwindSafe for FunnelManager
impl Send for FunnelManager
impl Sync for FunnelManager
impl Unpin for FunnelManager
impl UnsafeUnpin for FunnelManager
impl UnwindSafe for FunnelManager
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<A, T> DynMessage<A> for T
impl<A, T> DynMessage<A> for T
Source§fn handle_dyn<'a>(
self: Box<T>,
state: &'a mut A,
actor_ref: ActorRef<A>,
tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>,
stop: &'a mut bool,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
fn handle_dyn<'a>( self: Box<T>, state: &'a mut A, actor_ref: ActorRef<A>, tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>, stop: &'a mut bool, ) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
impl<T> ErasedDestructor for Twhere
T: 'static,
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>
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>
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