1
0
This repository has been archived on 2025-07-27. You can view files and clone it, but cannot push or open issues or pull requests.
Files
siadrive/SiaDrive.Api/UploadManager.h
2017-02-22 19:50:16 -06:00

58 lines
1.1 KiB
C++

#pragma once
#include "AutoThread.h"
#include "SQLiteCpp/Database.h"
#include <deque>
NS_BEGIN(Sia)
NS_BEGIN(Api)
class AFX_EXT_CLASS CUploadManager :
public CAutoThread
{
public:
enum class _UploadStatus : unsigned
{
NotFound,
Copying,
Queued,
Modified,
Uploading,
Complete,
Error
};
private:
typedef struct
{
std::uint64_t Id;
String SiaPath;
String FilePath;
String TempPath;
_UploadStatus Status;
} UploadData;
public:
CUploadManager(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
public:
virtual ~CUploadManager();
private:
SQLite::Database _uploadDatabase;
std::mutex _uploadMutex;
CSiaDriveConfig* _siaDriveConfig;
protected:
virtual void AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) override;
public:
_UploadStatus GetUploadStatus(const String& siaPath);
void AddOrUpdate(const String& siaPath, const String& filePath);
void Remove(const String& siaPath);
void PurgeCompleteStatus();
void PurgeErrorStatus();
};
typedef Sia::Api::CUploadManager::_UploadStatus UploadStatus;
NS_END(2)