mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Calculate program file directories:
* Determine location of database files in Config * Inject database directory or file path in PeerFinder and Validators * PeerFinder and Validators will share the same sqlite file
This commit is contained in:
committed by
Vinnie Falco
parent
e055dc1513
commit
28c7827f14
@@ -39,6 +39,7 @@ public:
|
||||
static Manager* New (
|
||||
Stoppable& parent,
|
||||
SiteFiles::Manager& siteFiles,
|
||||
File const& pathToDbFileOrDirectory,
|
||||
Callback& callback,
|
||||
clock_type& clock,
|
||||
Journal journal);
|
||||
|
||||
@@ -30,6 +30,7 @@ class ManagerImp
|
||||
public:
|
||||
ServiceQueue m_queue;
|
||||
SiteFiles::Manager& m_siteFiles;
|
||||
File m_databaseFile;
|
||||
clock_type& m_clock;
|
||||
Journal m_journal;
|
||||
StoreSqdb m_store;
|
||||
@@ -43,12 +44,14 @@ public:
|
||||
ManagerImp (
|
||||
Stoppable& stoppable,
|
||||
SiteFiles::Manager& siteFiles,
|
||||
File const& pathToDbFileOrDirectory,
|
||||
Callback& callback,
|
||||
clock_type& clock,
|
||||
Journal journal)
|
||||
: Manager (stoppable)
|
||||
, Thread ("PeerFinder")
|
||||
, m_siteFiles (siteFiles)
|
||||
, m_databaseFile (pathToDbFileOrDirectory)
|
||||
, m_clock (clock)
|
||||
, m_journal (journal)
|
||||
, m_store (journal)
|
||||
@@ -56,6 +59,8 @@ public:
|
||||
, m_logic (clock, callback, m_store, m_checker, journal)
|
||||
, m_secondsTimer (this)
|
||||
{
|
||||
if (m_databaseFile.isDirectory ())
|
||||
m_databaseFile = m_databaseFile.getChildFile("peerfinder.sqlite");
|
||||
}
|
||||
|
||||
~ManagerImp ()
|
||||
@@ -262,15 +267,12 @@ public:
|
||||
{
|
||||
m_journal.debug << "Initializing";
|
||||
|
||||
File const file (File::getSpecialLocation (
|
||||
File::userDocumentsDirectory).getChildFile ("PeerFinder.sqlite"));
|
||||
|
||||
Error error (m_store.open (file));
|
||||
Error error (m_store.open (m_databaseFile));
|
||||
|
||||
if (error)
|
||||
{
|
||||
m_journal.fatal <<
|
||||
"Failed to open '" << file.getFullPathName() << "'";
|
||||
"Failed to open '" << m_databaseFile.getFullPathName() << "'";
|
||||
}
|
||||
|
||||
if (! error)
|
||||
@@ -311,11 +313,13 @@ Manager::Manager (Stoppable& parent)
|
||||
Manager* Manager::New (
|
||||
Stoppable& parent,
|
||||
SiteFiles::Manager& siteFiles,
|
||||
File const& databaseFile,
|
||||
Callback& callback,
|
||||
clock_type& clock,
|
||||
Journal journal)
|
||||
{
|
||||
return new ManagerImp (parent, siteFiles, callback, clock, journal);
|
||||
return new ManagerImp (parent, siteFiles, databaseFile,
|
||||
callback, clock, journal);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -36,9 +36,13 @@ protected:
|
||||
public:
|
||||
/** Create a new Manager object.
|
||||
@param parent The parent Stoppable.
|
||||
@param pathToDbFileOrDirectory The directory where our database is stored
|
||||
@param journal Where to send log output.
|
||||
*/
|
||||
static Manager* New (Stoppable& stoppableParent, Journal journal);
|
||||
static Manager* New (
|
||||
Stoppable& stoppableParent,
|
||||
File const& pathToDbFileOrDirectory,
|
||||
Journal journal);
|
||||
|
||||
/** Destroy the object.
|
||||
Any pending source fetch operations are aborted. This will block
|
||||
|
||||
@@ -134,6 +134,7 @@ class ManagerImp
|
||||
{
|
||||
public:
|
||||
Journal m_journal;
|
||||
File m_databaseFile;
|
||||
StoreSqdb m_store;
|
||||
Logic m_logic;
|
||||
DeadlineTimer m_checkTimer;
|
||||
@@ -149,10 +150,14 @@ public:
|
||||
//
|
||||
bool m_checkSources;
|
||||
|
||||
ManagerImp (Stoppable& parent, Journal journal)
|
||||
ManagerImp (
|
||||
Stoppable& parent,
|
||||
File const& pathToDbFileOrDirectory,
|
||||
Journal journal)
|
||||
: Stoppable ("Validators::Manager", parent)
|
||||
, Thread ("Validators")
|
||||
, m_journal (journal)
|
||||
, m_databaseFile (pathToDbFileOrDirectory)
|
||||
, m_store (m_journal)
|
||||
, m_logic (m_store, m_journal)
|
||||
, m_checkTimer (this)
|
||||
@@ -164,6 +169,11 @@ public:
|
||||
"Validators constructed (debug)";
|
||||
m_journal.info <<
|
||||
"Validators constructed (info)";
|
||||
|
||||
if (m_databaseFile.isDirectory ())
|
||||
m_databaseFile = m_databaseFile.getChildFile("validators.sqlite");
|
||||
|
||||
|
||||
}
|
||||
|
||||
~ManagerImp ()
|
||||
@@ -306,10 +316,7 @@ public:
|
||||
|
||||
void init ()
|
||||
{
|
||||
File const file (File::getSpecialLocation (
|
||||
File::userDocumentsDirectory).getChildFile ("validators.sqlite"));
|
||||
|
||||
Error error (m_store.open (file));
|
||||
Error error (m_store.open (m_databaseFile));
|
||||
|
||||
if (! error)
|
||||
{
|
||||
@@ -375,9 +382,12 @@ Manager::Manager ()
|
||||
{
|
||||
}
|
||||
|
||||
Validators::Manager* Validators::Manager::New (Stoppable& parent, Journal journal)
|
||||
Validators::Manager* Validators::Manager::New (
|
||||
Stoppable& parent,
|
||||
File const& pathToDbFileOrDirectory,
|
||||
Journal journal)
|
||||
{
|
||||
return new Validators::ManagerImp (parent, journal);
|
||||
return new Validators::ManagerImp (parent, pathToDbFileOrDirectory, journal);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -288,7 +288,9 @@ public:
|
||||
, m_txQueue (TxQueue::New ())
|
||||
|
||||
, m_validators (add (Validators::Manager::New (
|
||||
*this, LogPartition::getJournal <ValidatorsLog> ())))
|
||||
*this,
|
||||
getConfig ().getModuleDatabasePath (),
|
||||
LogPartition::getJournal <ValidatorsLog> ())))
|
||||
|
||||
, mFeatures (IFeatures::New (2 * 7 * 24 * 60 * 60, 200)) // two weeks, 200/256
|
||||
|
||||
@@ -685,8 +687,8 @@ public:
|
||||
//
|
||||
// if (!getConfig ().RUN_STANDALONE)
|
||||
m_peers.reset (add (Peers::New (m_mainIoPool, *m_resourceManager,
|
||||
*m_siteFiles, *m_resolver, m_mainIoPool,
|
||||
m_peerSSLContext->get ())));
|
||||
*m_siteFiles, getConfig ().getModuleDatabasePath (),
|
||||
*m_resolver, m_mainIoPool, m_peerSSLContext->get ())));
|
||||
|
||||
// SSL context used for WebSocket connections.
|
||||
if (getConfig ().WEBSOCKET_SECURE)
|
||||
|
||||
@@ -239,6 +239,12 @@ void Config::setup (const std::string& strConf, bool bQuiet)
|
||||
|
||||
if (ec)
|
||||
throw std::runtime_error (boost::str (boost::format ("Can not create %s") % DATA_DIR));
|
||||
|
||||
// Create the new unified database
|
||||
m_moduleDbPath = getDatabaseDir();
|
||||
|
||||
if (m_moduleDbPath.isDirectory ())
|
||||
m_moduleDbPath = m_moduleDbPath.getChildFile("rippled.sqlite");
|
||||
}
|
||||
|
||||
void Config::load ()
|
||||
@@ -759,6 +765,12 @@ Config::Role Config::getAdminRole (Json::Value const& params, beast::IP::Endpoin
|
||||
return role;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
File const& Config::getModuleDatabasePath ()
|
||||
{
|
||||
return m_moduleDbPath;
|
||||
}
|
||||
|
||||
//
|
||||
//
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
@@ -282,7 +282,20 @@ public:
|
||||
private:
|
||||
std::string m_rpcIP;
|
||||
int m_rpcPort; // VFALCO TODO This should be a short.
|
||||
|
||||
private:
|
||||
/** The folder where new module databases should be located */
|
||||
File m_moduleDbPath;
|
||||
|
||||
public:
|
||||
//--------------------------------------------------------------------------
|
||||
/** Returns the location were databases should be located
|
||||
The location may be a file, in which case databases should be placed in
|
||||
the file, or it may be a directory, in which cases databases should be
|
||||
stored in a file named after the module (e.g. "peerfinder.sqlite") that
|
||||
is inside that directory.
|
||||
*/
|
||||
File const& getModuleDatabasePath ();
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -66,12 +66,14 @@ protected:
|
||||
public:
|
||||
typedef std::vector <Peer::pointer> PeerSequence;
|
||||
|
||||
static Peers* New (Stoppable& parent,
|
||||
static Peers* New (
|
||||
Stoppable& parent,
|
||||
Resource::Manager& resourceManager,
|
||||
SiteFiles::Manager& siteFiles,
|
||||
Resolver& resolver,
|
||||
boost::asio::io_service& io_service,
|
||||
boost::asio::ssl::context& context);
|
||||
SiteFiles::Manager& siteFiles,
|
||||
File const& pathToDbFileOrDirectory,
|
||||
Resolver& resolver,
|
||||
boost::asio::io_service& io_service,
|
||||
boost::asio::ssl::context& context);
|
||||
|
||||
virtual ~Peers () = 0;
|
||||
|
||||
|
||||
@@ -142,10 +142,11 @@ public:
|
||||
|
||||
PeersImp (Stoppable& parent,
|
||||
Resource::Manager& resourceManager,
|
||||
SiteFiles::Manager& siteFiles,
|
||||
Resolver& resolver,
|
||||
boost::asio::io_service& io_service,
|
||||
boost::asio::ssl::context& ssl_context)
|
||||
SiteFiles::Manager& siteFiles,
|
||||
File const& pathToDbFileOrDirectory,
|
||||
Resolver& resolver,
|
||||
boost::asio::io_service& io_service,
|
||||
boost::asio::ssl::context& ssl_context)
|
||||
: Peers (parent)
|
||||
, m_child_count (1)
|
||||
, m_journal (LogPartition::getJournal <PeersLog> ())
|
||||
@@ -153,6 +154,7 @@ public:
|
||||
, m_peerFinder (add (PeerFinder::Manager::New (
|
||||
*this,
|
||||
siteFiles,
|
||||
pathToDbFileOrDirectory,
|
||||
*this,
|
||||
get_seconds_clock (),
|
||||
LogPartition::getJournal <PeerFinderLog> ())))
|
||||
@@ -600,15 +602,17 @@ Peers::~Peers ()
|
||||
{
|
||||
}
|
||||
|
||||
Peers* Peers::New (Stoppable& parent,
|
||||
Peers* Peers::New (
|
||||
Stoppable& parent,
|
||||
Resource::Manager& resourceManager,
|
||||
SiteFiles::Manager& siteFiles,
|
||||
Resolver& resolver,
|
||||
boost::asio::io_service& io_service,
|
||||
boost::asio::ssl::context& ssl_context)
|
||||
SiteFiles::Manager& siteFiles,
|
||||
File const& pathToDbFileOrDirectory,
|
||||
Resolver& resolver,
|
||||
boost::asio::io_service& io_service,
|
||||
boost::asio::ssl::context& ssl_context)
|
||||
{
|
||||
return new PeersImp (parent, resourceManager, siteFiles,
|
||||
resolver, io_service, ssl_context);
|
||||
pathToDbFileOrDirectory, resolver, io_service, ssl_context);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user