diff --git a/src/logic/scripting/lua/libs/libnetwork.cpp b/src/logic/scripting/lua/libs/libnetwork.cpp index 48016f29..0add7721 100644 --- a/src/logic/scripting/lua/libs/libnetwork.cpp +++ b/src/logic/scripting/lua/libs/libnetwork.cpp @@ -11,7 +11,7 @@ static int l_http_get(lua::State* L) { lua::pushvalue(L, 2); auto onResponse = lua::create_lambda(L); - engine->getNetwork().httpGet(url, [onResponse](std::vector bytes) { + engine->getNetwork().get(url, [onResponse](std::vector bytes) { engine->postRunnable([=]() { onResponse({std::string(bytes.data(), bytes.size())}); }); @@ -25,7 +25,7 @@ static int l_http_get_binary(lua::State* L) { lua::pushvalue(L, 2); auto onResponse = lua::create_lambda(L); - engine->getNetwork().httpGet(url, [onResponse](std::vector bytes) { + engine->getNetwork().get(url, [onResponse](std::vector bytes) { auto buffer = std::make_shared>( reinterpret_cast(bytes.data()), bytes.size() ); diff --git a/src/network/Network.cpp b/src/network/Network.cpp index 3350ba2b..c4e9b004 100644 --- a/src/network/Network.cpp +++ b/src/network/Network.cpp @@ -31,7 +31,7 @@ struct Request { long maxSize; }; -class CurlHttp : public Http { +class CurlRequests : public Requests { CURLM* multiHandle; CURL* curl; @@ -45,11 +45,11 @@ class CurlHttp : public Http { std::queue requests; public: - CurlHttp(CURLM* multiHandle, CURL* curl) + CurlRequests(CURLM* multiHandle, CURL* curl) : multiHandle(multiHandle), curl(curl) { } - virtual ~CurlHttp() { + virtual ~CurlRequests() { curl_easy_cleanup(curl); curl_multi_remove_handle(multiHandle, curl); curl_multi_cleanup(multiHandle); @@ -156,7 +156,7 @@ public: return totalDownload; } - static std::unique_ptr create() { + static std::unique_ptr create() { auto curl = curl_easy_init(); if (curl == nullptr) { throw std::runtime_error("could not initialzie cURL"); @@ -166,7 +166,7 @@ public: curl_easy_cleanup(curl); throw std::runtime_error("could not initialzie cURL-multi"); } - return std::make_unique(multiHandle, curl); + return std::make_unique(multiHandle, curl); } }; @@ -325,32 +325,23 @@ public: } }; -class SocketTcp : public Tcp { -public: - SocketTcp() {}; - - std::shared_ptr connect(const std::string& address, int port) override { - return SocketImpl::connect(address, port); - } -}; - -Network::Network(std::unique_ptr http, std::unique_ptr tcp) - : http(std::move(http)), tcp(std::move(tcp)) { +Network::Network(std::unique_ptr requests) + : requests(std::move(requests)) { } Network::~Network() = default; -void Network::httpGet( +void Network::get( const std::string& url, OnResponse onResponse, OnReject onReject, long maxSize ) { - http->get(url, onResponse, onReject, maxSize); + requests->get(url, onResponse, onReject, maxSize); } std::shared_ptr Network::connect(const std::string& address, int port) { - auto socket = tcp->connect(address, port); + auto socket = SocketImpl::connect(address, port); connections.push_back(socket); return socket; } @@ -360,7 +351,7 @@ size_t Network::getTotalUpload() const { for (const auto& socket : connections) { totalUpload += socket->getTotalUpload(); } - return http->getTotalUpload() + totalUpload; + return requests->getTotalUpload() + totalUpload; } size_t Network::getTotalDownload() const { @@ -368,15 +359,14 @@ size_t Network::getTotalDownload() const { for (const auto& socket : connections) { totalDownload += socket->getTotalDownload(); } - return http->getTotalDownload() + totalDownload; + return requests->getTotalDownload() + totalDownload; } void Network::update() { - http->update(); + requests->update(); } std::unique_ptr Network::create(const NetworkSettings& settings) { - auto http = CurlHttp::create(); - auto tcp = std::make_unique(); - return std::make_unique(std::move(http), std::move(tcp)); + auto requests = CurlRequests::create(); + return std::make_unique(std::move(requests)); } diff --git a/src/network/Network.hpp b/src/network/Network.hpp index ef5728f8..62785ad2 100644 --- a/src/network/Network.hpp +++ b/src/network/Network.hpp @@ -11,9 +11,9 @@ namespace network { using OnResponse = std::function)>; using OnReject = std::function; - class Http { + class Requests { public: - virtual ~Http() {} + virtual ~Requests() {} virtual void get( const std::string& url, @@ -38,24 +38,14 @@ namespace network { virtual size_t getTotalDownload() const = 0; }; - class Tcp { - public: - virtual ~Tcp() {} - - virtual std::shared_ptr connect( - const std::string& address, int port - ) = 0; - }; - class Network { - std::unique_ptr http; - std::unique_ptr tcp; + std::unique_ptr requests; std::vector> connections; public: - Network(std::unique_ptr http, std::unique_ptr tcp); + Network(std::unique_ptr requests); ~Network(); - void httpGet( + void get( const std::string& url, OnResponse onResponse, OnReject onReject = nullptr, diff --git a/test/network/curltest.cpp b/test/network/curltest.cpp index 25f7c3cf..0713376e 100644 --- a/test/network/curltest.cpp +++ b/test/network/curltest.cpp @@ -6,7 +6,7 @@ TEST(curltest, curltest) { NetworkSettings settings {}; auto network = network::Network::create(settings); - network->httpGet( + network->get( "https://raw.githubusercontent.com/MihailRis/VoxelEngine-Cpp/refs/" "heads/curl/res/content/base/blocks/lamp.json", [](std::vector data) {