summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-04-03 14:55:32 +0200
committertroido <troido@protonmail.com>2020-04-03 14:55:32 +0200
commit94ec558680b70ed747519d5fd787d94b74ae470d (patch)
tree114344a9544e01ce5362945bdcd8ab40ed0d7c25 /src
parent4f256d606793e4c6f2627f4a10e71cc219ea8b67 (diff)
load servers from string adressesw
Diffstat (limited to 'src')
-rw-r--r--src/server/address.rs19
1 files changed, 19 insertions, 0 deletions
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<Box<dyn Server>> {
+ 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"))
+ }
+}