Skip to content

Commit

Permalink
[sin] add datafile and metadata
Browse files Browse the repository at this point in the history
Signed-off-by: crptec <crptec.fr@gmail.com>
  • Loading branch information
crptec committed Jan 4, 2021
1 parent 6dbbca8 commit 1044b43
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
62 changes: 62 additions & 0 deletions src/init.cpp
Expand Up @@ -48,6 +48,12 @@
#include <shutdown.h>
//>SIN
#include <sinovate/infinitynodetip.h> //for fInfinityNode flag
#include <sinovate/infinitynodeman.h>
#include <sinovate/infinitynodersv.h>
#include <sinovate/infinitynodepeer.h>
#include <sinovate/infinitynodemeta.h>
#include <sinovate/infinitynodelockreward.h>
#include <sinovate/flat-database.h>
//<SIN
#include <sync.h>
#include <timedata.h>
Expand Down Expand Up @@ -157,6 +163,9 @@ NODISCARD static bool CreatePidFile(const ArgsManager& args)
//

static std::unique_ptr<ECCVerifyHandle> globalVerifyHandle;
//>SIN
static std::unique_ptr<ECCMusigHandle> globalMusigHandle;
//<SIN

static std::thread g_load_block;

Expand Down Expand Up @@ -293,6 +302,17 @@ void Shutdown(NodeContext& node)
client->stop();
}

//>SIN
CFlatDB<CInfinitynodeMan> flatdb1("infinitynode.dat", "magicInfinityNodeCache");
flatdb1.Dump(infnodeman);
CFlatDB<CInfinitynodersv> flatdb2("infinitynodersv.dat", "magicInfinityRSV");
flatdb2.Dump(infnodersv);
CFlatDB<CInfinitynodeMeta> flatdb3("infinitynodemeta.dat", "magicInfinityMeta");
flatdb3.Dump(infnodemeta);
CFlatDB<CInfinitynodeLockInfo> flatdb4("infinitynodelockinfo.dat", "magicInfinityLockInfo");
flatdb4.Dump(infnodelrinfo);
//<SIN

#if ENABLE_ZMQ
if (g_zmq_notification_interface) {
UnregisterValidationInterface(g_zmq_notification_interface);
Expand All @@ -306,6 +326,9 @@ void Shutdown(NodeContext& node)
GetMainSignals().UnregisterBackgroundSignalScheduler();
globalVerifyHandle.reset();
ECC_Stop();
//>SIN
globalMusigHandle.reset();
//<SIN
node.mempool.reset();
node.chainman = nullptr;
node.scheduler.reset();
Expand Down Expand Up @@ -1233,6 +1256,9 @@ bool AppInitSanityChecks()
RandomInit();
ECC_Start();
globalVerifyHandle.reset(new ECCVerifyHandle());
//>SIN
globalMusigHandle.reset(new ECCMusigHandle());
//<SIN

// Sanity check
if (!InitSanityCheck())
Expand Down Expand Up @@ -1540,7 +1566,43 @@ bool AppInitMain(const util::Ref& context, NodeContext& node, interfaces::BlockA
}

// ********************************************************* Step 7: load block chain
//>SIN: try load SIN cache memory before connectblock, because we need these informations for validation of block
uiInterface.InitMessage(_("Loading on-chain Infinitynode data...").translated);
boost::filesystem::path pathDB = GetDataDir();
std::string strDBName;

strDBName = "infinitynode.dat";
CFlatDB<CInfinitynodeMan> flatdb1(strDBName, "magicInfinityNodeCache");
if(!flatdb1.Load(infnodeman)) {
LogPrintf("Failed to load Infinitynode list from %s.\n", (pathDB / strDBName).string());
InitError(strprintf(_("Failed to load Infinitynode list from %s."), (pathDB / strDBName).string()));
return false;
}

strDBName = "infinitynodersv.dat";
CFlatDB<CInfinitynodersv> flatdb2(strDBName, "magicInfinityRSV");
if(!flatdb2.Load(infnodersv)) {
LogPrintf("Failed to load RSV vote cache from %s.\n", (pathDB / strDBName).string());
InitError(strprintf(_("Failed to load RSV vote cache from %s."), (pathDB / strDBName).string()));
return false; // non mandatory
}

strDBName = "infinitynodemeta.dat";
CFlatDB<CInfinitynodeMeta> flatdb3(strDBName, "magicInfinityMeta");
if(!flatdb3.Load(infnodemeta)) {
LogPrintf("Failed to load Infinitynode Metatdata cache from %s.\n", (pathDB / strDBName).string());
InitError(strprintf(_("Failed to load Infinitynode Metatdata cache from %s"), (pathDB / strDBName).string()));
return false;
}

strDBName = "infinitynodelockinfo.dat";
CFlatDB<CInfinitynodeLockInfo> flatdb4(strDBName, "magicInfinityLockInfo");
if(!flatdb4.Load(infnodelrinfo)) {
LogPrintf("Failed to load Infinitynode LockReward cache from %s.\n", (pathDB / strDBName).string());
InitError(strprintf(_("Failed to load Infinitynode LockReward cache from %s"), (pathDB / strDBName).string()));
return false;
}
//<SIN
fReindex = args.GetBoolArg("-reindex", false);
bool fReindexChainState = args.GetBoolArg("-reindex-chainstate", false);

Expand Down
1 change: 1 addition & 0 deletions src/sinovate/flat-database.h
Expand Up @@ -184,6 +184,7 @@ class CFlatDB
if(readResult == IncorrectFormat)
{
LogPrintf("%s: Magic is ok but data has invalid format, will try to recreate\n", __func__);
return false;
}
else {
LogPrintf("%s: File format is unknown or invalid, please fix it manually\n", __func__);
Expand Down

0 comments on commit 1044b43

Please sign in to comment.