diff options
| author | troido <troido@protonmail.com> | 2020-04-03 14:55:32 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-04-03 14:55:32 +0200 |
| commit | 94ec558680b70ed747519d5fd787d94b74ae470d (patch) | |
| tree | 114344a9544e01ce5362945bdcd8ab40ed0d7c25 /src/server/address.rs | |
| parent | 4f256d606793e4c6f2627f4a10e71cc219ea8b67 (diff) | |
load servers from string adressesw
Diffstat (limited to 'src/server/address.rs')
| -rw-r--r-- | src/server/address.rs | 19 |
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")) + } +} |
