From 94ec558680b70ed747519d5fd787d94b74ae470d Mon Sep 17 00:00:00 2001 From: troido Date: Fri, 3 Apr 2020 14:55:32 +0200 Subject: load servers from string adressesw --- src/server/address.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/server/address.rs diff --git a/src/server/address.rs b/src/server/address.rs new file mode 100644 index 0000000..3d8e59f --- /dev/null +++ b/src/server/address.rs @@ -0,0 +1,19 @@ + +use std::net::SocketAddr; +use std::path::Path; +use crate::{ + Result, + aerr +}; +use super::tcpserver::TcpServer; +use super::unixserver::UnixServer; +use super::Server; + +pub fn server_from_address(typename: &str, text: &str) -> Result> { + match typename { + "inet" => Ok(Box::new(TcpServer::new(&text.parse()?)?)), + "unix" => Ok(Box::new(UnixServer::new(Path::new(text))?)), + "abstract" => Ok(Box::new(UnixServer::new(Path::new(&format!("\0{}", text)))?)), + _ => Err(aerr!("Invalid address type")) + } +} -- cgit