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;
CAutoThread::CAutoThread(const CSiaCurl& siaCurl) :
CAutoThread::CAutoThread(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
_siaCurl(siaCurl.GetHostConfig()),
_siaDriveConfig(siaDriveConfig),
_stopEvent(::CreateEvent(nullptr, FALSE, FALSE, nullptr))
{
}
@@ -23,7 +24,7 @@ void CAutoThread::StartAutoThread()
_thread.reset(new std::thread([this]() {
do
{
AutoThreadCallback(_siaCurl);
AutoThreadCallback(_siaCurl, _siaDriveConfig);
} while (::WaitForSingleObject(_stopEvent, 2000) == WAIT_TIMEOUT);
}));
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -4,8 +4,8 @@
using namespace Sia::Api;
CSiaApi::_CSiaFileTree::_CSiaFileTree(const CSiaCurl& siaCurl) :
CSiaBase(siaCurl)
CSiaApi::_CSiaFileTree::_CSiaFileTree(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
CSiaBase(siaCurl, siaDriveConfig)
{
}
@@ -20,7 +20,7 @@ void CSiaApi::_CSiaFileTree::BuildTree(const json& result)
_fileList.clear();
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
}
}*/
CSiaApi::_CSiaRenter::_CSiaRenter(const CSiaCurl& siaCurl) :
CSiaBase(siaCurl),
CAutoThread(siaCurl),
CSiaApi::_CSiaRenter::_CSiaRenter(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
CSiaBase(siaCurl, siaDriveConfig),
CAutoThread(siaCurl, siaDriveConfig),
_Funds(0),
_Hosts(0),
_Unspent(0),
@@ -63,7 +63,7 @@ CSiaApi::_CSiaRenter::~_CSiaRenter()
StopAutoThread();
}
void CSiaApi::_CSiaRenter::AutoThreadCallback(const CSiaCurl& siaCurl)
void CSiaApi::_CSiaRenter::AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig)
{
json result;
if (ApiSuccess(siaCurl.Get(L"/renter", result)))
@@ -75,7 +75,7 @@ void CSiaApi::_CSiaRenter::AutoThreadCallback(const CSiaCurl& siaCurl)
SetHosts(hosts);
SetUnspent(unspent);
CSiaFileTreePtr fileTree(new CSiaFileTree(siaCurl));
CSiaFileTreePtr fileTree(new CSiaFileTree(siaCurl, siaDriveConfig));
if (ApiSuccess(siaCurl.Get(L"/renter/files", 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 ret = SiaApiError::RequestError;
siaFileTree.reset(new CSiaFileTree(GetSiaCurl()));
siaFileTree.reset(new CSiaFileTree(GetSiaCurl(), &GetSiaDriveConfig()));
json 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) :
CSiaBase(siaCurl),
CSiaApi::_CSiaWallet::_CSiaWallet(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) :
CSiaBase(siaCurl, siaDriveConfig),
_Created(false),
_Locked(false)
{

View File

@@ -213,7 +213,7 @@ void CSiaDriveDlg::OnDocumentComplete(LPDISPATCH, LPCTSTR)
KillTimer(IDT_UI_ACTION_QUEUE);
// 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();
CallClientScript(L"setAvailableDrives", json(GetAvailableDrives()), nullptr);