1
0

Pass config to api members

This commit is contained in:
Scott E. Graves
2017-02-19 14:28:58 -06:00
parent 9a0d323596
commit 9d74953782
10 changed files with 50 additions and 36 deletions

View File

@@ -3,8 +3,9 @@
using namespace Sia::Api; using namespace Sia::Api;
CAutoThread::CAutoThread(const CSiaCurl& siaCurl) : CAutoThread::CAutoThread(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
_siaCurl(siaCurl.GetHostConfig()), _siaCurl(siaCurl.GetHostConfig()),
_siaDriveConfig(siaDriveConfig),
_stopEvent(::CreateEvent(nullptr, FALSE, FALSE, nullptr)) _stopEvent(::CreateEvent(nullptr, FALSE, FALSE, nullptr))
{ {
} }
@@ -23,7 +24,7 @@ void CAutoThread::StartAutoThread()
_thread.reset(new std::thread([this]() { _thread.reset(new std::thread([this]() {
do do
{ {
AutoThreadCallback(_siaCurl); AutoThreadCallback(_siaCurl, _siaDriveConfig);
} while (::WaitForSingleObject(_stopEvent, 2000) == WAIT_TIMEOUT); } while (::WaitForSingleObject(_stopEvent, 2000) == WAIT_TIMEOUT);
})); }));
} }

View File

@@ -5,16 +5,18 @@
NS_BEGIN(Sia) NS_BEGIN(Sia)
NS_BEGIN(Api) NS_BEGIN(Api)
class CSiaDriveConfig;
class AFX_EXT_CLASS CAutoThread class AFX_EXT_CLASS CAutoThread
{ {
public: public:
CAutoThread(const CSiaCurl& siaCurl); CAutoThread(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
public: public:
virtual ~CAutoThread(); virtual ~CAutoThread();
private: private:
CSiaCurl _siaCurl; CSiaCurl _siaCurl;
CSiaDriveConfig* _siaDriveConfig;
HANDLE _stopEvent; HANDLE _stopEvent;
std::unique_ptr<std::thread> _thread; std::unique_ptr<std::thread> _thread;
std::mutex _startStopMutex; std::mutex _startStopMutex;
@@ -22,7 +24,7 @@ private:
protected: protected:
void StartAutoThread(); void StartAutoThread();
void StopAutoThread(); void StopAutoThread();
virtual void AutoThreadCallback(const CSiaCurl& siaCurl) = 0; virtual void AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) = 0;
}; };
NS_END(2) NS_END(2)

View File

@@ -1,14 +1,16 @@
#include "stdafx.h" #include "stdafx.h"
#include "SiaApi.h" #include "SiaApi.h"
#include <regex> #include <regex>
#include "SiaDriveConfig.h"
using namespace Sia::Api; using namespace Sia::Api;
CSiaApi::CSiaApi(const SiaHostConfig& hostConfig) : CSiaApi::CSiaApi(const SiaHostConfig& hostConfig, CSiaDriveConfig* siaDriveConfig) :
_siaCurl(hostConfig), _siaCurl(hostConfig),
_wallet(new CSiaWallet(_siaCurl)), _siaDriveConfig(siaDriveConfig),
_renter(new CSiaRenter(_siaCurl)), _wallet(new CSiaWallet(_siaCurl, siaDriveConfig)),
_consensus(new CSiaConsensus(_siaCurl)) _renter(new CSiaRenter(_siaCurl, siaDriveConfig)),
_consensus(new CSiaConsensus(_siaCurl, siaDriveConfig))
{ {
} }

View File

@@ -7,11 +7,13 @@ NS_BEGIN(Sia)
NS_BEGIN(Api) NS_BEGIN(Api)
class CSiaDriveConfig;
class AFX_EXT_CLASS CSiaBase class AFX_EXT_CLASS CSiaBase
{ {
public: public:
explicit CSiaBase(const CSiaCurl& siaCurl) : explicit CSiaBase(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
_siaCurl(siaCurl) _siaCurl(siaCurl),
_siaDriveConfig(siaDriveConfig)
{ {
} }
@@ -22,12 +24,18 @@ public:
private: private:
const CSiaCurl& _siaCurl; const CSiaCurl& _siaCurl;
CSiaDriveConfig* _siaDriveConfig;
protected: protected:
inline const CSiaCurl& GetSiaCurl() const inline const CSiaCurl& GetSiaCurl() const
{ {
return _siaCurl; return _siaCurl;
} }
inline CSiaDriveConfig& GetSiaDriveConfig() const
{
return *_siaDriveConfig;
}
}; };
@@ -60,7 +68,7 @@ public:
friend _CSiaFileTree; friend _CSiaFileTree;
private: private:
explicit _CSiaFile(const CSiaCurl& siaCurl, const json& fileJson); explicit _CSiaFile(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig, const json& fileJson);
public: public:
virtual ~_CSiaFile(); virtual ~_CSiaFile();
@@ -80,7 +88,7 @@ public:
{ {
friend CSiaApi; friend CSiaApi;
public: public:
explicit _CSiaFileTree(const CSiaCurl& siaCurl); explicit _CSiaFileTree(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
public: public:
virtual ~_CSiaFileTree(); virtual ~_CSiaFileTree();
@@ -105,7 +113,7 @@ public:
{ {
friend CSiaApi; friend CSiaApi;
private: private:
explicit _CSiaWallet(const CSiaCurl& siaCurl); explicit _CSiaWallet(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
public: public:
virtual ~_CSiaWallet(); virtual ~_CSiaWallet();
@@ -132,7 +140,7 @@ public:
friend CSiaApi; friend CSiaApi;
private: private:
explicit _CSiaRenter(const CSiaCurl& siaCurl); explicit _CSiaRenter(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
public: public:
virtual ~_CSiaRenter(); virtual ~_CSiaRenter();
@@ -144,7 +152,7 @@ public:
Property(std::uint32_t, TotalUploadProgress, public, private) Property(std::uint32_t, TotalUploadProgress, public, private)
protected: protected:
virtual void AutoThreadCallback(const CSiaCurl& siaCurl) override; virtual void AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) override;
public: public:
_SiaApiError FileExists(const String& siaPath, bool& exists) const; _SiaApiError FileExists(const String& siaPath, bool& exists) const;
@@ -161,7 +169,7 @@ public:
friend CSiaApi; friend CSiaApi;
private: private:
explicit _CSiaConsensus(const CSiaCurl& siaCurl); explicit _CSiaConsensus(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig);
public: public:
virtual ~_CSiaConsensus(); virtual ~_CSiaConsensus();
@@ -172,17 +180,18 @@ public:
Property(String, CurrentBlock, public, private) Property(String, CurrentBlock, public, private)
protected: protected:
virtual void AutoThreadCallback(const CSiaCurl& siaCurl) override; virtual void AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) override;
}; };
public: public:
explicit CSiaApi(const SiaHostConfig& hostConfig); explicit CSiaApi(const SiaHostConfig& hostConfig, CSiaDriveConfig* siaDriveConfig);
public: public:
~CSiaApi(); ~CSiaApi();
private: private:
CSiaCurl _siaCurl; CSiaCurl _siaCurl;
CSiaDriveConfig* _siaDriveConfig;
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;

View File

@@ -3,9 +3,9 @@
using namespace Sia::Api; using namespace Sia::Api;
CSiaApi::_CSiaConsensus::_CSiaConsensus(const CSiaCurl& siaCurl) : CSiaApi::_CSiaConsensus::_CSiaConsensus(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
CSiaBase(siaCurl), CSiaBase(siaCurl, siaDriveConfig),
CAutoThread(siaCurl), CAutoThread(siaCurl, siaDriveConfig),
_Height(0), _Height(0),
_Synced(false), _Synced(false),
_CurrentBlock(L"") _CurrentBlock(L"")
@@ -18,7 +18,7 @@ CSiaApi::_CSiaConsensus::~_CSiaConsensus()
StopAutoThread(); StopAutoThread();
} }
void CSiaApi::_CSiaConsensus::AutoThreadCallback(const CSiaCurl& siaCurl) void CSiaApi::_CSiaConsensus::AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
{ {
json result; json result;
if (ApiSuccess(siaCurl.Get(L"/consensus", result))) if (ApiSuccess(siaCurl.Get(L"/consensus", result)))

View File

@@ -3,8 +3,8 @@
using namespace Sia::Api; using namespace Sia::Api;
CSiaApi::_CSiaFile::_CSiaFile(const CSiaCurl& siaCurl, const json& fileJson) : CSiaApi::_CSiaFile::_CSiaFile(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig, const json& fileJson) :
CSiaBase(siaCurl), CSiaBase(siaCurl, siaDriveConfig),
_SiaPath(CA2W(fileJson["siapath"].get<std::string>().c_str())), _SiaPath(CA2W(fileJson["siapath"].get<std::string>().c_str())),
_FileSize(fileJson["filesize"].get<std::uint64_t>()), _FileSize(fileJson["filesize"].get<std::uint64_t>()),
_Available(fileJson["available"].get<bool>()), _Available(fileJson["available"].get<bool>()),

View File

@@ -4,8 +4,8 @@
using namespace Sia::Api; using namespace Sia::Api;
CSiaApi::_CSiaFileTree::_CSiaFileTree(const CSiaCurl& siaCurl) : CSiaApi::_CSiaFileTree::_CSiaFileTree(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
CSiaBase(siaCurl) CSiaBase(siaCurl, siaDriveConfig)
{ {
} }
@@ -20,7 +20,7 @@ void CSiaApi::_CSiaFileTree::BuildTree(const json& result)
_fileList.clear(); _fileList.clear();
for (const auto& file : result["files"]) for (const auto& file : result["files"])
{ {
_fileList.push_back(CSiaFilePtr(new CSiaFile(GetSiaCurl(), file))); _fileList.push_back(CSiaFilePtr(new CSiaFile(GetSiaCurl(), &GetSiaDriveConfig(), file)));
} }
} }

View File

@@ -46,9 +46,9 @@ using namespace Sia::Api;
"unspent": "1234" // hastings "unspent": "1234" // hastings
} }
}*/ }*/
CSiaApi::_CSiaRenter::_CSiaRenter(const CSiaCurl& siaCurl) : CSiaApi::_CSiaRenter::_CSiaRenter(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
CSiaBase(siaCurl), CSiaBase(siaCurl, siaDriveConfig),
CAutoThread(siaCurl), CAutoThread(siaCurl, siaDriveConfig),
_Funds(0), _Funds(0),
_Hosts(0), _Hosts(0),
_Unspent(0), _Unspent(0),
@@ -63,7 +63,7 @@ CSiaApi::_CSiaRenter::~_CSiaRenter()
StopAutoThread(); StopAutoThread();
} }
void CSiaApi::_CSiaRenter::AutoThreadCallback(const CSiaCurl& siaCurl) void CSiaApi::_CSiaRenter::AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
{ {
json result; json result;
if (ApiSuccess(siaCurl.Get(L"/renter", result))) if (ApiSuccess(siaCurl.Get(L"/renter", result)))
@@ -75,7 +75,7 @@ void CSiaApi::_CSiaRenter::AutoThreadCallback(const CSiaCurl& siaCurl)
SetHosts(hosts); SetHosts(hosts);
SetUnspent(unspent); SetUnspent(unspent);
CSiaFileTreePtr fileTree(new CSiaFileTree(siaCurl)); CSiaFileTreePtr fileTree(new CSiaFileTree(siaCurl, siaDriveConfig));
if (ApiSuccess(siaCurl.Get(L"/renter/files", result))) if (ApiSuccess(siaCurl.Get(L"/renter/files", result)))
{ {
fileTree->BuildTree(result); fileTree->BuildTree(result);
@@ -147,7 +147,7 @@ SiaApiError CSiaApi::_CSiaRenter::QueueUploadFile(const String& siaPath, const S
SiaApiError CSiaApi::_CSiaRenter::GetFileTree(CSiaFileTreePtr& siaFileTree) const SiaApiError CSiaApi::_CSiaRenter::GetFileTree(CSiaFileTreePtr& siaFileTree) const
{ {
SiaApiError ret = SiaApiError::RequestError; SiaApiError ret = SiaApiError::RequestError;
siaFileTree.reset(new CSiaFileTree(GetSiaCurl())); siaFileTree.reset(new CSiaFileTree(GetSiaCurl(), &GetSiaDriveConfig()));
json result; json result;
if (ApiSuccess(GetSiaCurl().Get(L"/renter/files", result))) if (ApiSuccess(GetSiaCurl().Get(L"/renter/files", result)))
{ {

View File

@@ -21,8 +21,8 @@ static String SeedLangToString(const SiaSeedLanguage& lang)
} }
} }
CSiaApi::_CSiaWallet::_CSiaWallet(const CSiaCurl& siaCurl) : CSiaApi::_CSiaWallet::_CSiaWallet(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
CSiaBase(siaCurl), CSiaBase(siaCurl, siaDriveConfig),
_Created(false), _Created(false),
_Locked(false) _Locked(false)
{ {

View File

@@ -213,7 +213,7 @@ void CSiaDriveDlg::OnDocumentComplete(LPDISPATCH, LPCTSTR)
KillTimer(IDT_UI_ACTION_QUEUE); KillTimer(IDT_UI_ACTION_QUEUE);
// Create new API to clear all cached data used by threaded implementations // Create new API to clear all cached data used by threaded implementations
_siaApi.reset(new CSiaApi({ L"localhost", 9980, L"1.1.0" })); _siaApi.reset(new CSiaApi({ L"localhost", 9980, L"1.1.0" }, &_siaConfig));
ClearDisplay(); ClearDisplay();
CallClientScript(L"setAvailableDrives", json(GetAvailableDrives()), nullptr); CallClientScript(L"setAvailableDrives", json(GetAvailableDrives()), nullptr);