From d76d8ced9bd5d8a2d37dbb602e2502fb53eb1084 Mon Sep 17 00:00:00 2001 From: niansa Date: Fri, 7 Apr 2023 09:35:13 +0200 Subject: [PATCH] Fixed 'Result' type conflict and added missing include to SingleEvent.cpp --- AsyncManager.cpp | 2 +- AsyncManager.hpp | 8 ++++---- Client.cpp | 22 +++++++++++----------- Client.hpp | 2 +- Receiver.cpp | 12 ++++++------ Receiver.hpp | 2 +- Sender.cpp | 10 +++++----- Sender.hpp | 4 ++-- basic-coro/SingleEvent.cpp | 2 ++ 9 files changed, 33 insertions(+), 31 deletions(-) diff --git a/AsyncManager.cpp b/AsyncManager.cpp index 76ad2fc..d3433e8 100644 --- a/AsyncManager.cpp +++ b/AsyncManager.cpp @@ -102,7 +102,7 @@ void AsyncManager::run() { // Set futures for (auto& [future, value] : execQueue) { - future->set(value?Result::Error:Result::Success); + future->set(value?AsyncResult::Error:AsyncResult::Success); future = nullptr; } diff --git a/AsyncManager.hpp b/AsyncManager.hpp index c875217..3b5b240 100644 --- a/AsyncManager.hpp +++ b/AsyncManager.hpp @@ -11,14 +11,14 @@ class Runtime; -enum class Result { +enum class AsyncResult { Error, Success }; class AsyncManager { public: - using SockFuture = basiccoro::SingleEvent; + using SockFuture = basiccoro::SingleEvent; using SockFutureUnique = std::unique_ptr; using SockFutureMap = std::unordered_multimap; @@ -43,13 +43,13 @@ public: stopping = true; } - basiccoro::AwaitableTask waitRead(int fd) { + basiccoro::AwaitableTask waitRead(int fd) { auto event = std::make_unique(); auto eventPtr = event.get(); sockReads.emplace(fd, std::move(event)); co_return co_await *eventPtr; } - basiccoro::AwaitableTask waitWrite(int fd) { + basiccoro::AwaitableTask waitWrite(int fd) { auto event = std::make_unique(); auto eventPtr = event.get(); sockWrites.emplace(fd, std::move(event)); diff --git a/Client.cpp b/Client.cpp index aecc907..5060a60 100644 --- a/Client.cpp +++ b/Client.cpp @@ -72,18 +72,18 @@ Client::Client(const std::string& addr, unsigned port, AsyncManager& asyncManage # endif } -basiccoro::AwaitableTask Client::ask(std::string_view prompt, const std::function (unsigned progress)>& on_progress, const std::function (std::string_view token)>& on_token) { +basiccoro::AwaitableTask Client::ask(std::string_view prompt, const std::function (unsigned progress)>& on_progress, const std::function (std::string_view token)>& on_token) { std::string fres; // Send prompt length uint8_t len = prompt.length(); - if (co_await connection->writeObject(len, true) == Result::Error) { - co_return Result::Error; + if (co_await connection->writeObject(len, true) == AsyncResult::Error) { + co_return AsyncResult::Error; } // Send prompt - if (co_await connection->write(prompt) == Result::Error) { - co_return Result::Error; + if (co_await connection->write(prompt) == AsyncResult::Error) { + co_return AsyncResult::Error; } // Receive progress @@ -91,8 +91,8 @@ basiccoro::AwaitableTask Client::ask(std::string_view prompt, const std: uint8_t progress; // Receive percentage - if (co_await connection->readObject(progress) == Result::Error) { - co_return Result::Error; + if (co_await connection->readObject(progress) == AsyncResult::Error) { + co_return AsyncResult::Error; } // Run on_progress callback @@ -105,8 +105,8 @@ basiccoro::AwaitableTask Client::ask(std::string_view prompt, const std: // Receive response for (;;) { // Receive response length - if (co_await connection->readObject(len) == Result::Error) { - co_return Result::Error; + if (co_await connection->readObject(len) == AsyncResult::Error) { + co_return AsyncResult::Error; } // End if zero @@ -118,7 +118,7 @@ basiccoro::AwaitableTask Client::ask(std::string_view prompt, const std: // Receive response const auto token = co_await connection->read(len); if (token.empty()) { - co_return Result::Error; + co_return AsyncResult::Error; } // Run on_token callback @@ -126,5 +126,5 @@ basiccoro::AwaitableTask Client::ask(std::string_view prompt, const std: } // No error - co_return Result::Success; + co_return AsyncResult::Success; } diff --git a/Client.hpp b/Client.hpp index ab2a627..2311f53 100644 --- a/Client.hpp +++ b/Client.hpp @@ -43,7 +43,7 @@ class Client public: Client(const std::string &addr, unsigned port, AsyncManager& asyncManager); - basiccoro::AwaitableTask ask(std::string_view prompt, const std::function (unsigned progress)>& on_progress, const std::function (std::string_view token)>& on_token); + basiccoro::AwaitableTask ask(std::string_view prompt, const std::function (unsigned progress)>& on_progress, const std::function (std::string_view token)>& on_token); }; #endif // CLIENT_HPP diff --git a/Receiver.cpp b/Receiver.cpp index 7839c01..e027016 100644 --- a/Receiver.cpp +++ b/Receiver.cpp @@ -21,27 +21,27 @@ basiccoro::AwaitableTask Receiver::Simple::read(size_t amount) { // Return final buffer co_return fres; } -basiccoro::AwaitableTask Receiver::Simple::read(std::byte *buffer, size_t size) { +basiccoro::AwaitableTask Receiver::Simple::read(std::byte *buffer, size_t size) { size_t allBytesRead = 0; while (allBytesRead != size) { // Wait for data - if (co_await aMan.waitRead(fd) == Result::Error) [[unlikely]] { + if (co_await aMan.waitRead(fd) == AsyncResult::Error) [[unlikely]] { // Error - co_return Result::Error; + co_return AsyncResult::Error; } // Receive data ssize_t bytesRead; if ((bytesRead = recv(fd, reinterpret_cast(buffer+allBytesRead), size-allBytesRead, 0)) < 0) [[unlikely]] { // Error - co_return Result::Error; + co_return AsyncResult::Error; } allBytesRead += bytesRead; } // No error - co_return Result::Success; + co_return AsyncResult::Success; } basiccoro::AwaitableTask Receiver::Simple::readSome(size_t max) { @@ -50,7 +50,7 @@ basiccoro::AwaitableTask Receiver::Simple::readSome(size_t max) { fres.resize(max); // Wait for data - if (co_await aMan.waitRead(fd) == Result::Error) [[unlikely]] { + if (co_await aMan.waitRead(fd) == AsyncResult::Error) [[unlikely]] { co_return ""; } diff --git a/Receiver.hpp b/Receiver.hpp index d5fd970..9cbe7df 100644 --- a/Receiver.hpp +++ b/Receiver.hpp @@ -21,7 +21,7 @@ public: // Reads the exact amount of bytes given basiccoro::AwaitableTask read(size_t amount); - basiccoro::AwaitableTask read(std::byte *buffer, size_t size); + basiccoro::AwaitableTask read(std::byte *buffer, size_t size); // Reads at max. the amount of bytes given basiccoro::AwaitableTask readSome(size_t max); diff --git a/Sender.cpp b/Sender.cpp index 7af72ea..539ba77 100644 --- a/Sender.cpp +++ b/Sender.cpp @@ -12,18 +12,18 @@ -basiccoro::AwaitableTask Sender::Simple::write(std::string_view str, bool moreData) { +basiccoro::AwaitableTask Sender::Simple::write(std::string_view str, bool moreData) { co_return co_await this->write(reinterpret_cast(str.data()), str.size(), moreData); } -basiccoro::AwaitableTask Sender::Simple::write(const std::byte *data, size_t size, bool moreData) { +basiccoro::AwaitableTask Sender::Simple::write(const std::byte *data, size_t size, bool moreData) { std::string fres; // Wait for socket to get ready for writing - if (co_await aMan.waitWrite(fd) == Result::Error) [[unlikely]] { - co_return Result::Error; + if (co_await aMan.waitWrite(fd) == AsyncResult::Error) [[unlikely]] { + co_return AsyncResult::Error; } // Write - co_return (send(fd, reinterpret_cast(data), size, MSG_FLAGS_OR_ZERO(MSG_NOSIGNAL | (int(moreData)*MSG_MORE))) < 0)?Result::Error:Result::Success; + co_return (send(fd, reinterpret_cast(data), size, MSG_FLAGS_OR_ZERO(MSG_NOSIGNAL | (int(moreData)*MSG_MORE))) < 0)?AsyncResult::Error:AsyncResult::Success; } diff --git a/Sender.hpp b/Sender.hpp index c842d01..e51e1a9 100644 --- a/Sender.hpp +++ b/Sender.hpp @@ -18,8 +18,8 @@ protected: public: Simple(AsyncManager& asyncManager, int fd) : aMan(asyncManager), fd(fd) {} - basiccoro::AwaitableTask write(std::string_view, bool moreData = false); - basiccoro::AwaitableTask write(const std::byte *data, size_t, bool moreData = false); + basiccoro::AwaitableTask write(std::string_view, bool moreData = false); + basiccoro::AwaitableTask write(const std::byte *data, size_t, bool moreData = false); template auto writeObject(const T& o, bool moreData = false) { diff --git a/basic-coro/SingleEvent.cpp b/basic-coro/SingleEvent.cpp index 8a63ba8..63e1ba8 100644 --- a/basic-coro/SingleEvent.cpp +++ b/basic-coro/SingleEvent.cpp @@ -1,5 +1,7 @@ #include "SingleEvent.hpp" +#include + namespace basiccoro {