mod proxy;
mod proxy_interface;
use anyhow::Result;
use netxserver::prelude::*;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
pub use proxy_interface::*;
pub struct ProxyController {
pub token: NetxToken<Self>,
pub proxy_id: AtomicUsize,
}
impl Drop for ProxyController {
fn drop(&mut self) {
let session_id = self.token.get_session_id();
log::info!(
"Proxy:{} Controller:{} drop",
self.proxy_id.load(Ordering::Acquire),
session_id
);
}
}
pub struct ImplCreateProxyController;
impl ICreateController for ImplCreateProxyController {
type Controller = ProxyController;
#[inline]
fn create_controller(
&self,
token: NetxToken<Self::Controller>,
) -> Result<Arc<Self::Controller>> {
Ok(Arc::new(ProxyController {
token,
proxy_id: Default::default(),
}))
}
}