mirror of
https://github.com/cubixle/radius-rs.git
synced 2026-04-30 13:48:44 +01:00
Return Result<T, E> at RequestHandler
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
|
use async_trait::async_trait;
|
||||||
use tokio::net::UdpSocket;
|
use tokio::net::UdpSocket;
|
||||||
|
|
||||||
use crate::request::Request;
|
use crate::request::Request;
|
||||||
|
|
||||||
pub trait RequestHandler: 'static + Sync + Send {
|
#[async_trait]
|
||||||
fn handle_radius_request(&self, conn: &UdpSocket, request: &Request);
|
pub trait RequestHandler<T, E>: 'static + Sync + Send {
|
||||||
|
async fn handle_radius_request(&self, conn: &UdpSocket, request: &Request) -> Result<T, E>;
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-7
@@ -11,11 +11,12 @@ use crate::packet::Packet;
|
|||||||
use crate::request::Request;
|
use crate::request::Request;
|
||||||
use crate::request_handler::RequestHandler;
|
use crate::request_handler::RequestHandler;
|
||||||
use crate::secret_provider::SecretProvider;
|
use crate::secret_provider::SecretProvider;
|
||||||
|
use std::fmt::Debug;
|
||||||
|
|
||||||
pub struct Server {}
|
pub struct Server {}
|
||||||
|
|
||||||
impl Server {
|
impl Server {
|
||||||
pub async fn run<T: RequestHandler, U: SecretProvider>(
|
pub async fn run<X, E: Debug, T: RequestHandler<X, E>, U: SecretProvider>(
|
||||||
host: &str,
|
host: &str,
|
||||||
port: u16,
|
port: u16,
|
||||||
buf_size: usize,
|
buf_size: usize,
|
||||||
@@ -35,7 +36,7 @@ impl Server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn run_loop<T: RequestHandler, U: SecretProvider>(
|
async fn run_loop<X, E: Debug, T: RequestHandler<X, E>, U: SecretProvider>(
|
||||||
host: &str,
|
host: &str,
|
||||||
port: u16,
|
port: u16,
|
||||||
buf_size: usize,
|
buf_size: usize,
|
||||||
@@ -90,7 +91,7 @@ impl Server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn process_request<T: RequestHandler, U: SecretProvider>(
|
async fn process_request<X, E: Debug, T: RequestHandler<X, E>, U: SecretProvider>(
|
||||||
conn: Arc<UdpSocket>,
|
conn: Arc<UdpSocket>,
|
||||||
request_data: &[u8],
|
request_data: &[u8],
|
||||||
local_addr: SocketAddr,
|
local_addr: SocketAddr,
|
||||||
@@ -147,10 +148,18 @@ impl Server {
|
|||||||
undergoing_requests.insert(key);
|
undergoing_requests.insert(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
request_handler.handle_radius_request(
|
match request_handler
|
||||||
conn.borrow(),
|
.handle_radius_request(
|
||||||
&Request::new(local_addr, remote_addr, packet),
|
conn.borrow(),
|
||||||
);
|
&Request::new(local_addr, remote_addr, packet),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
Ok(_) => {}
|
||||||
|
Err(e) => {
|
||||||
|
println!("{:?}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let mut undergoing_requests = undergoing_requests_lock.write().unwrap();
|
let mut undergoing_requests = undergoing_requests_lock.write().unwrap();
|
||||||
undergoing_requests.remove(&key_for_remove);
|
undergoing_requests.remove(&key_for_remove);
|
||||||
|
|||||||
Reference in New Issue
Block a user