Skip to main content

UdpStreamService

Struct UdpStreamService 

Source
pub struct UdpStreamService { /* private fields */ }
Expand description

UDP stream proxy service

Listens on a port and proxies UDP datagrams to registered backends. Maintains session state to route responses back to the correct client.

Implementations§

Source§

impl UdpStreamService

Source

pub fn new( registry: Arc<StreamRegistry>, listen_port: u16, session_timeout: Option<Duration>, ) -> Self

Create a new UDP stream service

Source

pub fn port(&self) -> u16

Get the listen port

Source

pub fn session_timeout(&self) -> Duration

Get the session timeout

Source

pub fn registry(&self) -> &Arc<StreamRegistry>

Get a reference to the registry

Source

pub async fn run(self: Arc<Self>) -> Result<(), Box<dyn Error + Send + Sync>>

Run the UDP proxy service by binding its own socket.

This method runs indefinitely, proxying UDP datagrams between clients and backends. Each client address gets its own session.

§Errors

Returns an error if binding to the listen port fails or if the main receive loop encounters a fatal IO error.

Source

pub async fn serve( self: Arc<Self>, socket: UdpSocket, ) -> Result<(), Box<dyn Error + Send + Sync>>

Run the UDP proxy service on an externally-provided socket.

This is the non-self-binding entry point, used by ProxyManager to serve UDP endpoints when the caller has already bound the socket.

Runs indefinitely, proxying UDP datagrams between clients and backends. Each client address gets its own session with a dedicated backend socket.

§Errors

Returns an error if the main receive loop encounters a fatal IO error or if creating a backend session socket fails.

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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> 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> PolicyExt for T
where T: ?Sized,

Source§

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

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, 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<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