diff options
author | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-07-19 15:14:39 +0200 |
---|---|---|
committer | Claudius 'keldu' Holeksa <mail@keldu.de> | 2024-07-19 15:14:39 +0200 |
commit | d37e2449e0c5f44b4d10ecd6c99841a9b3c4b582 (patch) | |
tree | afc017525271fce04b78fb0415ff379132bca1c6 /modules/io | |
parent | 14dbb72f6c6043b442c5a74299fbe55b9f199ca6 (diff) |
wip
Diffstat (limited to 'modules/io')
-rw-r--r-- | modules/io/c++/io.hpp | 3 | ||||
-rw-r--r-- | modules/io/c++/io_unix.cpp | 20 |
2 files changed, 23 insertions, 0 deletions
diff --git a/modules/io/c++/io.hpp b/modules/io/c++/io.hpp index ea185a8..43ef7f0 100644 --- a/modules/io/c++/io.hpp +++ b/modules/io/c++/io.hpp @@ -175,6 +175,9 @@ public: */ virtual conveyor<own<network_address>> resolve_address(const std::string &addr, uint16_t port_hint = 0) = 0; + + virtual error_or<own<network_address>> + parse_address(const std::string &addr, uint16_t port_hint = 0) = 0; /** * Parse the provided string and uint16 to the preferred storage method diff --git a/modules/io/c++/io_unix.cpp b/modules/io/c++/io_unix.cpp index 8afdae9..5a8da3a 100644 --- a/modules/io/c++/io_unix.cpp +++ b/modules/io/c++/io_unix.cpp @@ -440,6 +440,10 @@ public: resolve_address(const std::string &address, uint16_t port_hint = 0) override; + error_or<own<network_address>> + parse_address(const std::string& address, + uint16_t port_hint = 0) override; + own<server> listen(network_address &addr) override; conveyor<own<io_stream>> connect(network_address &addr) override; @@ -855,6 +859,22 @@ unix_network::resolve_address(const std::string &path, uint16_t port_hint) { heap<unix_network_address>(path, port_hint, std::move(addresses))}; } +error_or<own<network_address>> +unix_network::parse_address(const std::string& path, uint16_t port_hint){ + std::string_view addr_view{path}; + { + std::string_view str_begins_with = "unix:"; + if(begins_with(addr_view, str_begins_with)) { + addr_view.remove_prefix(str_begins_with.size()); + } + } + + //std::vector<socket_address> addresses = + // socket_address::parse(addr_view, port_hint); + + return make_error<err::not_implemented>("Only resolving is implemented in unix, not plain parsing."); +} + unix_io_provider::unix_io_provider(unix_event_port &port_ref, own<event_port> port) : event_port_{port_ref}, event_loop_{std::move(port)}, unix_network_{ |