Set a couple of parameters by setter, instead of function parameters

This commit is contained in:
moznion
2021-01-03 11:34:05 +09:00
parent 88e01fc828
commit 48a9c56e3f
3 changed files with 23 additions and 28 deletions

View File

@@ -93,14 +93,7 @@ mod tests {
let port = 1812;
let mut server = Server::listen(
"0.0.0.0",
port,
1500,
true,
MyRequestHandler {},
MySecretProvider {},
)
let mut server = Server::listen("0.0.0.0", port, MyRequestHandler {}, MySecretProvider {})
.await
.unwrap();
@@ -140,8 +133,6 @@ mod tests {
let mut server = Server::listen(
"0.0.0.0",
port,
1500,
true,
LongTimeTakingHandler {},
MySecretProvider {},
)

View File

@@ -18,16 +18,11 @@ async fn main() {
env_logger::init();
// start UDP listening
let mut server = Server::listen(
"0.0.0.0",
1812,
1500,
false,
MyRequestHandler {},
MySecretProvider {},
)
let mut server = Server::listen("0.0.0.0", 1812, MyRequestHandler {}, MySecretProvider {})
.await
.unwrap();
server.set_buffer_size(1500); // default value: 1500
server.set_skip_authenticity_validation(false); // default value: false
// once it has reached here, a RADIUS server is now ready
info!(

View File

@@ -14,6 +14,9 @@ use crate::core::request::Request;
use std::fmt::Debug;
use std::marker::PhantomData;
const DEFAULT_BUFFER_SIZE: usize = 1500;
const DEFAULT_SKIP_AUTHENTICITY_VALIDATION: bool = false;
/// A basic implementation of the RADIUS server.
///
/// ## Example Usage
@@ -47,15 +50,11 @@ impl<X, E: Debug, T: RequestHandler<X, E>, U: SecretProvider> Server<X, E, T, U>
///
/// - `host` - a host to listen (e.g. `0.0.0.0`)
/// - `port` - a port number to listen (e.g. `1812`)
/// - `buf_size` - a buffer size for receiving the request payload (e.g. `1500`)
/// - `skip_authenticity_validation` - a flag to specify whether to skip the authenticity validation or not.
/// - `request_handler` - a request handler for the RADIUS requests.
/// - `secret_provider` - a provider for shared-secret value.
pub async fn listen(
host: &str,
port: u16,
buf_size: usize,
skip_authenticity_validation: bool,
request_handler: T,
secret_provider: U,
) -> Result<Self, io::Error> {
@@ -68,8 +67,8 @@ impl<X, E: Debug, T: RequestHandler<X, E>, U: SecretProvider> Server<X, E, T, U>
let conn_arc = Arc::new(conn);
Ok(Server {
skip_authenticity_validation,
buf_size,
skip_authenticity_validation: DEFAULT_SKIP_AUTHENTICITY_VALIDATION,
buf_size: DEFAULT_BUFFER_SIZE,
conn_arc,
request_handler_arc,
secret_provider_arc,
@@ -96,6 +95,16 @@ impl<X, E: Debug, T: RequestHandler<X, E>, U: SecretProvider> Server<X, E, T, U>
}
}
/// Set a buffer size for receiving the request payload (default: `1500`).
pub fn set_buffer_size(&mut self, buf_size: usize) {
self.buf_size = buf_size;
}
/// Set a flag to specify whether to skip the authenticity validation or not (default: `false`).
pub fn set_skip_authenticity_validation(&mut self, skip_authenticity_validation: bool) {
self.skip_authenticity_validation = skip_authenticity_validation;
}
/// Returns the listening address.
pub fn get_listen_address(&self) -> io::Result<SocketAddr> {
self.conn_arc.local_addr()