From b048b02732cbfcfbb95bb8e16dec71aca0e977f4 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Wed, 16 Oct 2024 18:51:50 +0200 Subject: Reworked abstraction for network --- modules/io/c++/io_unix.cpp | 58 +++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 29 deletions(-) (limited to 'modules/io/c++/io_unix.cpp') diff --git a/modules/io/c++/io_unix.cpp b/modules/io/c++/io_unix.cpp index 73e8e3b..1d89e7d 100644 --- a/modules/io/c++/io_unix.cpp +++ b/modules/io/c++/io_unix.cpp @@ -264,7 +264,7 @@ public: ssize_t unix_read(int fd, void *buffer, size_t length); ssize_t unix_write(int fd, const void *buffer, size_t length); -class unix_io_stream final : public io_stream, public i_fd_owner { +class unix_io_stream final : public io_stream, public i_fd_owner { private: own> read_ready_ = nullptr; own> on_read_disconnect_ = nullptr; @@ -299,19 +299,19 @@ public: void notify(uint32_t mask) override; }; -class unix_server final : public server, public i_fd_owner { +class unix_server final : public server, public i_fd_owner { private: - own>> accept_feeder_ = nullptr; + own>>> accept_feeder_ = nullptr; public: unix_server(unix_event_port &event_port, int file_descriptor, int fd_flags); - conveyor> accept() override; + conveyor>> accept() override; void notify(uint32_t mask) override; }; -class unix_datagram final : public datagram, public i_fd_owner { +class unix_datagram final : public datagram, public i_fd_owner { private: own> read_ready_ = nullptr; own> write_ready_ = nullptr; @@ -324,7 +324,7 @@ public: conveyor read_ready() override; error_or write(const void *buffer, size_t length, - network_address &dest) override; + network_address &dest) override; conveyor write_ready() override; void notify(uint32_t mask) override; @@ -437,19 +437,19 @@ private: public: unix_network(unix_event_port &event_port); - conveyor> + conveyor>> resolve_address(const std::string &address, uint16_t port_hint = 0) override; - error_or> + error_or>> parse_address(const std::string& address, uint16_t port_hint = 0) override; - own listen(network_address &addr) override; + own> listen(network_address &addr) override; - conveyor> connect(network_address &addr) override; + conveyor>> connect(network_address &addr) override; - own datagram(network_address &addr) override; + own> bind_datagram(network_address &addr) override; }; class unix_io_provider final : public io_provider { @@ -462,7 +462,7 @@ private: public: unix_io_provider(unix_event_port &port_ref, own port); - class network &get_network() override; + network &get_network() override; own wrap_input_fd(int fd) override; @@ -564,8 +564,8 @@ unix_server::unix_server(unix_event_port &event_port, int file_descriptor, int fd_flags) : i_fd_owner{event_port, file_descriptor, fd_flags, EPOLLIN} {} -conveyor> unix_server::accept() { - auto caf = new_conveyor_and_feeder>(); +conveyor>> unix_server::accept() { + auto caf = new_conveyor_and_feeder>>(); accept_feeder_ = std::move(caf.feeder); return std::move(caf.conveyor); } @@ -624,7 +624,7 @@ conveyor unix_datagram::read_ready() { } error_or unix_datagram::write(const void *buffer, size_t length, - network_address &dest) { + network_address &dest) { unix_network_address &unix_dest = static_cast(dest); socket_address &sock_addr = unix_dest.unix_address(); socklen_t sock_addr_length = sock_addr.get_raw_length(); @@ -664,7 +664,7 @@ bool begins_with(const std::string_view &viewed, } std::variant -translate_network_address_to_unix_network_address(network_address &addr) { +translate_network_address_to_unix_network_address(network_address &addr) { auto addr_variant = addr.representation(); std::variant os_addr = std::visit( @@ -705,7 +705,7 @@ unix_network_address &translate_to_unix_address_ref( } // namespace -own unix_network::listen(network_address &addr) { +own> unix_network::listen(network_address &addr) { auto unix_addr_storage = translate_network_address_to_unix_network_address(addr); unix_network_address &address = @@ -743,7 +743,7 @@ own unix_network::listen(network_address &addr) { #include namespace saw { namespace unix { -conveyor> unix_network::connect(network_address &addr) { +conveyor>> unix_network::connect(network_address &addr) { auto unix_addr_storage = translate_network_address_to_unix_network_address(addr); unix_network_address &address = @@ -751,12 +751,12 @@ conveyor> unix_network::connect(network_address &addr) { assert(address.unix_address_size() > 0); if (address.unix_address_size() == 0) { - return conveyor>{make_error()}; + return conveyor>>{make_error()}; } int fd = address.unix_address(0).socket(SOCK_STREAM); if (fd < 0) { - return conveyor>{make_error()}; + return conveyor>>{make_error()}; } own io_str = @@ -780,12 +780,12 @@ conveyor> unix_network::connect(network_address &addr) { if (error == EINPROGRESS) { conveyor write_rdy = io_str->write_ready(); - return write_rdy.then([ios = std::move(io_str)] () mutable -> error_or> { + return write_rdy.then([ios = std::move(io_str)] () mutable -> error_or>> { if(!ios){ return make_error("Limit node invalidated"); } - own mov_ios = std::move(ios); + own> mov_ios = std::move(ios); /** * This guarantees the old async pipe to not be used anymore */ @@ -795,7 +795,7 @@ conveyor> unix_network::connect(network_address &addr) { }); } else if (error != EINTR) { /// @todo Push error message from - return conveyor>{make_error()}; + return conveyor>>{make_error()}; } } else { success = true; @@ -804,13 +804,13 @@ conveyor> unix_network::connect(network_address &addr) { } if (!success) { - return conveyor>{make_error()}; + return conveyor>>{make_error()}; } - return conveyor>{std::move(io_str)}; + return conveyor>>{std::move(io_str)}; } -own unix_network::datagram(network_address &addr) { +own> unix_network::bind_datagram(network_address &addr) { auto unix_addr_storage = translate_network_address_to_unix_network_address(addr); unix_network_address &address = @@ -853,7 +853,7 @@ size_t unix_network_address::unix_address_size() const { unix_network::unix_network(unix_event_port &event) : event_port_{event} {} -conveyor> +conveyor>> unix_network::resolve_address(const std::string &path, uint16_t port_hint) { std::string_view addr_view{path}; { @@ -866,11 +866,11 @@ unix_network::resolve_address(const std::string &path, uint16_t port_hint) { std::vector addresses = socket_address::resolve(addr_view, port_hint); - return conveyor>{ + return conveyor>>{ heap(path, port_hint, std::move(addresses))}; } -error_or> +error_or>> unix_network::parse_address(const std::string& path, uint16_t port_hint){ std::string_view addr_view{path}; { -- cgit v1.2.3