#include "./request.hpp" #include #include "./curl_wrappers.hpp" namespace mijin { namespace { bool gCurlInited = false; std::mutex gCurlInitMutex; class CURLGuard { public: ~CURLGuard() MIJIN_NOEXCEPT { if (gCurlInited) { curl_global_cleanup(); } } } gCURLGuard [[maybe_unused]]; bool initCURL() MIJIN_NOEXCEPT { if (gCurlInited) { return true; } const std::unique_lock initLock(gCurlInitMutex); if (gCurlInited) { return true; } gCurlInited = (curl_global_init(0) == CURLE_OK); return gCurlInited; } } Task> c_request(const URL& url, HTTPRequest request) MIJIN_NOEXCEPT { (void) url; (void) request; if (!initCURL()) { co_return StreamError::UNKNOWN_ERROR; } curl::CurlEasy easy; if (!easy.init()) { co_return StreamError::UNKNOWN_ERROR; } easy.setURL(url); co_return StreamError::UNKNOWN_ERROR; } } // namespace mijin