pub struct TcpProxy { /* private fields */ }Implementations§
Source§impl TcpProxy
impl TcpProxy
pub fn new( registry: Registry, sessions: Rc<RefCell<SessionManager>>, pool: Rc<RefCell<Pool>>, backends: Rc<RefCell<BackendMap>>, ) -> TcpProxy
pub fn add_listener( &mut self, config: TcpListenerConfig, token: Token, ) -> Result<Token, ProxyError>
pub fn remove_listener(&mut self, address: &ListenerKey) -> bool
Sourcepub fn inherited_socket_fate(&self, addr: &ListenerKey) -> InheritedSocketFate
pub fn inherited_socket_fate(&self, addr: &ListenerKey) -> InheritedSocketFate
What this proxy would do with a socket handed to
activate_listener for addr. See
crate::InheritedSocketFate.
The event loop is single-threaded, so nothing can change the listener’s
active flag between this answer and the activate_listener call that
acts on it.
pub fn activate_listener( &self, addr: &ListenerKey, tcp_listener: Option<MioTcpListener>, ) -> Result<Token, ProxyError>
Sourcepub fn listener_token(&self, address: &ListenerKey) -> Option<Token>
pub fn listener_token(&self, address: &ListenerKey) -> Option<Token>
The slab token reserved for the listener at address, if this proxy
holds one.
A listener owns exactly one slab slot for its whole AddListener ->
RemoveListener lifetime, and no remove_listener implementation
touches the session slab. Server therefore reads the token here
BEFORE dropping the listener, so that reserved slot is released exactly
once, at the end of the lifetime.
pub fn give_back_listeners(&mut self) -> Vec<(ListenerKey, MioTcpListener)>
pub fn give_back_listener( &mut self, address: &ListenerKey, ) -> Result<(Token, MioTcpListener), ProxyError>
Sourcepub fn update_listener(
&mut self,
patch: UpdateTcpListenerConfig,
) -> Result<(), ProxyError>
pub fn update_listener( &mut self, patch: UpdateTcpListenerConfig, ) -> Result<(), ProxyError>
Apply a partial-update patch to the identified TCP listener.
pub fn add_tcp_front( &mut self, front: RequestTcpFrontend, ) -> Result<(), ProxyError>
pub fn remove_tcp_front( &mut self, front: RequestTcpFrontend, ) -> Result<(), ProxyError>
Trait Implementations§
Source§impl ProxyConfiguration for TcpProxy
impl ProxyConfiguration for TcpProxy
fn notify(&mut self, message: WorkerRequest) -> WorkerResponse
Source§fn accept(
&mut self,
token: ListenToken,
) -> Result<(MioTcpStream, SocketAddr), AcceptError>
fn accept( &mut self, token: ListenToken, ) -> Result<(MioTcpStream, SocketAddr), AcceptError>
Accept one connection on the listener behind
token, returning the
socket together with the peer address accept(2) reported for it.Source§fn create_session(
&mut self,
frontend_sock: MioTcpStream,
peer: SocketAddr,
token: ListenToken,
wait_time: Duration,
proxy: Rc<RefCell<Self>>,
) -> Result<(), AcceptError>
fn create_session( &mut self, frontend_sock: MioTcpStream, peer: SocketAddr, token: ListenToken, wait_time: Duration, proxy: Rc<RefCell<Self>>, ) -> Result<(), AcceptError>
Build the session for a socket
Self::accept returned. peer is the
address accept(2) returned with it, so the session never has to ask
the kernel again with getpeername(2).Auto Trait Implementations§
impl !RefUnwindSafe for TcpProxy
impl !Send for TcpProxy
impl !Sync for TcpProxy
impl !UnwindSafe for TcpProxy
impl Freeze for TcpProxy
impl Unpin for TcpProxy
impl UnsafeUnpin for TcpProxy
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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