pub struct Router(/* private fields */);Expand description
Handles packet forwarding between transport protocols.
Implementations§
Source§impl Router
impl Router
Sourcepub fn get_receiver(
&self,
interface: SocketAddr,
) -> UnboundedReceiver<(Vec<u8>, ResponseMethod, SocketAddr)>
pub fn get_receiver( &self, interface: SocketAddr, ) -> UnboundedReceiver<(Vec<u8>, ResponseMethod, SocketAddr)>
Get the socket reader for the route.
Each transport protocol is layered according to its own socket, and the data forwarded to this socket can be obtained by routing.
§Example
use std::net::SocketAddr;
use turn_server::router::*;
use turn_server::turn::ResponseMethod;
#[tokio::main]
async fn main() {
let addr = "127.0.0.1:8080".parse::<SocketAddr>().unwrap();
let router = Router::default();
let mut receiver = router.get_receiver(addr);
router.send(&addr, ResponseMethod::ChannelData, &addr, &[1, 2, 3]);
let ret = receiver.recv().await.unwrap();
assert_eq!(ret.0, vec![1, 2, 3]);
assert_eq!(ret.1, ResponseMethod::ChannelData);
assert_eq!(ret.2, addr);
}Sourcepub fn send(
&self,
interface: &SocketAddr,
method: ResponseMethod,
addr: &SocketAddr,
data: &[u8],
)
pub fn send( &self, interface: &SocketAddr, method: ResponseMethod, addr: &SocketAddr, data: &[u8], )
Send data to router.
By specifying the socket identifier and destination address, the route is forwarded to the corresponding socket. However, it should be noted that calling this function will not notify whether the socket exists. If it does not exist, the data will be discarded by default.
§Example
use std::net::SocketAddr;
use turn_server::router::*;
use turn_server::turn::ResponseMethod;
#[tokio::main]
async fn main() {
let addr = "127.0.0.1:8080".parse::<SocketAddr>().unwrap();
let router = Router::default();
let mut receiver = router.get_receiver(addr);
router.send(&addr, ResponseMethod::ChannelData, &addr, &[1, 2, 3]);
let ret = receiver.recv().await.unwrap();
assert_eq!(ret.0, vec![1, 2, 3]);
assert_eq!(ret.1, ResponseMethod::ChannelData);
assert_eq!(ret.2, addr);
}Sourcepub fn remove(&self, interface: &SocketAddr)
pub fn remove(&self, interface: &SocketAddr)
delete socket.
§Example
use std::net::SocketAddr;
use turn_server::router::*;
use turn_server::turn::ResponseMethod;
#[tokio::main]
async fn main() {
let addr = "127.0.0.1:8080".parse::<SocketAddr>().unwrap();
let router = Router::default();
let mut receiver = router.get_receiver(addr);
router.send(&addr, ResponseMethod::ChannelData, &addr, &[1, 2, 3]);
let ret = receiver.recv().await.unwrap();
assert_eq!(ret.0, vec![1, 2, 3]);
assert_eq!(ret.1, ResponseMethod::ChannelData);
assert_eq!(ret.2, addr);
router.remove(&addr);
assert!(receiver.recv().await.is_none());
}Trait Implementations§
Auto Trait Implementations§
impl Freeze for Router
impl !RefUnwindSafe for Router
impl Send for Router
impl Sync for Router
impl Unpin for Router
impl !UnwindSafe for Router
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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