#pragma once #include "BufferQueue.hpp" #include "fslib.hpp" #include "sys/sys.hpp" #include #include #include #include namespace curl { // clang-format off struct DownloadStruct : sys::threadpool::DataStruct { /// @brief Buffer queue for downloads. BufferQueue bufferQueue{BufferQueue::NO_LIMIT, 0}; /// @brief Destination file to write to. fslib::File *dest{}; /// @brief Optional. Task to update with progress. sys::ProgressTask *task{}; /// @brief Size of the file being downloaded. int64_t fileSize{}; /// @brief Signals when the write thread is complete. std::binary_semaphore writeComplete{0}; }; // clang-format on static inline std::shared_ptr create_download_struct(fslib::File &dest, sys::ProgressTask *task, int64_t fileSize) { auto downloadStruct = std::make_shared(); downloadStruct->dest = &dest; downloadStruct->task = task; downloadStruct->fileSize = fileSize; return downloadStruct; } }