Single refresh thread
This commit is contained in:
@@ -112,8 +112,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
class SIADRIVE_EXPORTABLE _CSiaWallet :
|
class SIADRIVE_EXPORTABLE _CSiaWallet :
|
||||||
public virtual CSiaBase,
|
public virtual CSiaBase
|
||||||
public virtual CAutoThread
|
|
||||||
{
|
{
|
||||||
friend CSiaApi;
|
friend CSiaApi;
|
||||||
private:
|
private:
|
||||||
@@ -130,8 +129,8 @@ public:
|
|||||||
Property(SiaCurrency, UnconfirmedBalance, public, private)
|
Property(SiaCurrency, UnconfirmedBalance, public, private)
|
||||||
Property(SString, ReceiveAddress, public, private)
|
Property(SString, ReceiveAddress, public, private)
|
||||||
|
|
||||||
protected:
|
private:
|
||||||
virtual void AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) override;
|
virtual void Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
_SiaApiError Create(const _SiaSeedLanguage& seedLanguage, SString& seed);
|
_SiaApiError Create(const _SiaSeedLanguage& seedLanguage, SString& seed);
|
||||||
@@ -141,8 +140,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
class SIADRIVE_EXPORTABLE _CSiaRenter :
|
class SIADRIVE_EXPORTABLE _CSiaRenter :
|
||||||
public virtual CSiaBase,
|
public virtual CSiaBase
|
||||||
public virtual CAutoThread
|
|
||||||
{
|
{
|
||||||
friend CSiaApi;
|
friend CSiaApi;
|
||||||
|
|
||||||
@@ -158,8 +156,12 @@ public:
|
|||||||
Property(std::uint64_t, TotalUsedBytes, public, private)
|
Property(std::uint64_t, TotalUsedBytes, public, private)
|
||||||
Property(std::uint32_t, TotalUploadProgress, public, private)
|
Property(std::uint32_t, TotalUploadProgress, public, private)
|
||||||
|
|
||||||
protected:
|
private:
|
||||||
virtual void AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) override;
|
std::shared_ptr<_CSiaFileTree> _fileTree;
|
||||||
|
std::mutex _fileTreeMutex;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
_SiaApiError FileExists(const SString& siaPath, bool& exists) const;
|
_SiaApiError FileExists(const SString& siaPath, bool& exists) const;
|
||||||
@@ -168,8 +170,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
class SIADRIVE_EXPORTABLE _CSiaConsensus :
|
class SIADRIVE_EXPORTABLE _CSiaConsensus :
|
||||||
public virtual CSiaBase,
|
public virtual CSiaBase
|
||||||
public virtual CAutoThread
|
|
||||||
{
|
{
|
||||||
friend CSiaApi;
|
friend CSiaApi;
|
||||||
|
|
||||||
@@ -184,8 +185,8 @@ public:
|
|||||||
Property(bool, Synced, public, private)
|
Property(bool, Synced, public, private)
|
||||||
Property(SString, CurrentBlock, public, private)
|
Property(SString, CurrentBlock, public, private)
|
||||||
|
|
||||||
protected:
|
private:
|
||||||
virtual void AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) override;
|
void Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -201,6 +202,10 @@ private:
|
|||||||
std::shared_ptr<_CSiaWallet> _wallet;
|
std::shared_ptr<_CSiaWallet> _wallet;
|
||||||
std::shared_ptr<_CSiaRenter> _renter;
|
std::shared_ptr<_CSiaRenter> _renter;
|
||||||
std::shared_ptr<_CSiaConsensus> _consensus;
|
std::shared_ptr<_CSiaConsensus> _consensus;
|
||||||
|
std::unique_ptr<CAutoThread> _refreshThread;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static SString FormatToSiaPath(SString path);
|
static SString FormatToSiaPath(SString path);
|
||||||
|
@@ -10,16 +10,26 @@ CSiaApi::CSiaApi(const SiaHostConfig& hostConfig, CSiaDriveConfig* siaDriveConfi
|
|||||||
_siaDriveConfig(siaDriveConfig),
|
_siaDriveConfig(siaDriveConfig),
|
||||||
_wallet(new CSiaWallet(_siaCurl, siaDriveConfig)),
|
_wallet(new CSiaWallet(_siaCurl, siaDriveConfig)),
|
||||||
_renter(new CSiaRenter(_siaCurl, siaDriveConfig)),
|
_renter(new CSiaRenter(_siaCurl, siaDriveConfig)),
|
||||||
_consensus(new CSiaConsensus(_siaCurl, siaDriveConfig))
|
_consensus(new CSiaConsensus(_siaCurl, siaDriveConfig)),
|
||||||
|
_refreshThread(new CAutoThread(_siaCurl, _siaDriveConfig, [this] (const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) { this->Refresh(siaCurl, siaDriveConfig); }))
|
||||||
{
|
{
|
||||||
|
_refreshThread->StartAutoThread();
|
||||||
}
|
}
|
||||||
|
|
||||||
CSiaApi::~CSiaApi()
|
CSiaApi::~CSiaApi()
|
||||||
{
|
{
|
||||||
|
_refreshThread->StopAutoThread();
|
||||||
//TODO Make this an option to lock on exit
|
//TODO Make this an option to lock on exit
|
||||||
//_wallet->Lock();
|
//_wallet->Lock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSiaApi::Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
|
||||||
|
{
|
||||||
|
this->_wallet->Refresh(siaCurl, siaDriveConfig);
|
||||||
|
this->_consensus->Refresh(siaCurl, siaDriveConfig);
|
||||||
|
this->_renter->Refresh(siaCurl, siaDriveConfig);
|
||||||
|
}
|
||||||
|
|
||||||
SString CSiaApi::FormatToSiaPath(SString path)
|
SString CSiaApi::FormatToSiaPath(SString path)
|
||||||
{
|
{
|
||||||
if (path.Length())
|
if (path.Length())
|
||||||
|
@@ -4,20 +4,17 @@ using namespace Sia::Api;
|
|||||||
|
|
||||||
CSiaApi::_CSiaConsensus::_CSiaConsensus(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
|
CSiaApi::_CSiaConsensus::_CSiaConsensus(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
|
||||||
CSiaBase(siaCurl, siaDriveConfig),
|
CSiaBase(siaCurl, siaDriveConfig),
|
||||||
CAutoThread(siaCurl, siaDriveConfig),
|
|
||||||
_Height(0),
|
_Height(0),
|
||||||
_Synced(false),
|
_Synced(false),
|
||||||
_CurrentBlock(L"")
|
_CurrentBlock(L"")
|
||||||
{
|
{
|
||||||
StartAutoThread();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CSiaApi::_CSiaConsensus::~_CSiaConsensus()
|
CSiaApi::_CSiaConsensus::~_CSiaConsensus()
|
||||||
{
|
{
|
||||||
StopAutoThread();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSiaApi::_CSiaConsensus::AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
|
void CSiaApi::_CSiaConsensus::Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
|
||||||
{
|
{
|
||||||
json result;
|
json result;
|
||||||
if (ApiSuccess(siaCurl.Get(L"/consensus", result)))
|
if (ApiSuccess(siaCurl.Get(L"/consensus", result)))
|
||||||
|
@@ -47,22 +47,19 @@ using namespace Sia::Api;
|
|||||||
}*/
|
}*/
|
||||||
CSiaApi::_CSiaRenter::_CSiaRenter(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
|
CSiaApi::_CSiaRenter::_CSiaRenter(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
|
||||||
CSiaBase(siaCurl, siaDriveConfig),
|
CSiaBase(siaCurl, siaDriveConfig),
|
||||||
CAutoThread(siaCurl, siaDriveConfig),
|
|
||||||
_Funds(0),
|
_Funds(0),
|
||||||
_Hosts(0),
|
_Hosts(0),
|
||||||
_Unspent(0),
|
_Unspent(0),
|
||||||
_TotalUsedBytes(0),
|
_TotalUsedBytes(0),
|
||||||
_TotalUploadProgress(100)
|
_TotalUploadProgress(100)
|
||||||
{
|
{
|
||||||
StartAutoThread();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CSiaApi::_CSiaRenter::~_CSiaRenter()
|
CSiaApi::_CSiaRenter::~_CSiaRenter()
|
||||||
{
|
{
|
||||||
StopAutoThread();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSiaApi::_CSiaRenter::AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
|
void CSiaApi::_CSiaRenter::Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
|
||||||
{
|
{
|
||||||
json result;
|
json result;
|
||||||
if (ApiSuccess(siaCurl.Get(L"/renter", result)))
|
if (ApiSuccess(siaCurl.Get(L"/renter", result)))
|
||||||
@@ -78,7 +75,11 @@ void CSiaApi::_CSiaRenter::AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDrive
|
|||||||
if (ApiSuccess(siaCurl.Get(L"/renter/files", result)))
|
if (ApiSuccess(siaCurl.Get(L"/renter/files", result)))
|
||||||
{
|
{
|
||||||
fileTree->BuildTree(result);
|
fileTree->BuildTree(result);
|
||||||
|
{
|
||||||
|
std::lock_guard<std::mutex> l(_fileTreeMutex);
|
||||||
|
_fileTree = fileTree;
|
||||||
|
}
|
||||||
|
|
||||||
auto fileList = fileTree->GetFileList();
|
auto fileList = fileTree->GetFileList();
|
||||||
if (fileList.size())
|
if (fileList.size())
|
||||||
{
|
{
|
||||||
@@ -142,14 +143,11 @@ SiaApiError CSiaApi::_CSiaRenter::DownloadFile(const SString& siaPath, const SSt
|
|||||||
|
|
||||||
SiaApiError CSiaApi::_CSiaRenter::GetFileTree(CSiaFileTreePtr& siaFileTree) const
|
SiaApiError CSiaApi::_CSiaRenter::GetFileTree(CSiaFileTreePtr& siaFileTree) const
|
||||||
{
|
{
|
||||||
SiaApiError ret = SiaApiError::RequestError;
|
siaFileTree = _fileTree;
|
||||||
siaFileTree.reset(new CSiaFileTree(GetSiaCurl(), &GetSiaDriveConfig()));
|
if (!siaFileTree)
|
||||||
json result;
|
{
|
||||||
if (ApiSuccess(GetSiaCurl().Get(L"/renter/files", result)))
|
siaFileTree.reset(new CSiaFileTree(GetSiaCurl(), &GetSiaDriveConfig()));
|
||||||
{
|
}
|
||||||
siaFileTree->BuildTree(result);
|
|
||||||
ret = SiaApiError::Success;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
return SiaApiError::Success;
|
||||||
}
|
}
|
@@ -22,19 +22,16 @@ static SString SeedLangToString(const SiaSeedLanguage& lang)
|
|||||||
|
|
||||||
CSiaApi::_CSiaWallet::_CSiaWallet(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
|
CSiaApi::_CSiaWallet::_CSiaWallet(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
|
||||||
CSiaBase(siaCurl, siaDriveConfig),
|
CSiaBase(siaCurl, siaDriveConfig),
|
||||||
CAutoThread(siaCurl, siaDriveConfig),
|
|
||||||
_Created(false),
|
_Created(false),
|
||||||
_Locked(false),
|
_Locked(false),
|
||||||
_Connected(false),
|
_Connected(false),
|
||||||
_ConfirmedBalance(0),
|
_ConfirmedBalance(0),
|
||||||
_UnconfirmedBalance(0)
|
_UnconfirmedBalance(0)
|
||||||
{
|
{
|
||||||
StartAutoThread();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CSiaApi::_CSiaWallet::~_CSiaWallet()
|
CSiaApi::_CSiaWallet::~_CSiaWallet()
|
||||||
{
|
{
|
||||||
StopAutoThread();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*{
|
/*{
|
||||||
@@ -48,7 +45,7 @@ CSiaApi::_CSiaWallet::~_CSiaWallet()
|
|||||||
"siafundbalance": "1", // siafunds, big int
|
"siafundbalance": "1", // siafunds, big int
|
||||||
"siacoinclaimbalance": "9001", // hastings, big int
|
"siacoinclaimbalance": "9001", // hastings, big int
|
||||||
}*/
|
}*/
|
||||||
void CSiaApi::_CSiaWallet::AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
|
void CSiaApi::_CSiaWallet::Refresh(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
|
||||||
{
|
{
|
||||||
bool locked = false;
|
bool locked = false;
|
||||||
bool created = false;
|
bool created = false;
|
||||||
|
Reference in New Issue
Block a user