mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-27 06:25:51 +00:00
Merge branch 'master' of github.com:jedmccaleb/NewCoin
This commit is contained in:
@@ -57,6 +57,7 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<AdditionalLibraryDirectories>..\OpenSSL\lib\VC;..\boost_1_52_0\stage\lib;..\protobuf\vsprojects\Debug</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>..\OpenSSL\lib\VC;..\boost_1_52_0\stage\lib;..\protobuf\vsprojects\Debug</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>ssleay32MDd.lib;libeay32MTd.lib;libprotobuf.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>ssleay32MDd.lib;libeay32MTd.lib;libprotobuf.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<OutputFile>$(OutDir)rippled.exe</OutputFile>
|
||||||
</Link>
|
</Link>
|
||||||
<PreBuildEvent>
|
<PreBuildEvent>
|
||||||
<Command>
|
<Command>
|
||||||
@@ -81,18 +82,19 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<AdditionalLibraryDirectories>..\OpenSSL\lib\VC;..\boost_1_47_0\stage\lib;..\protobuf-2.4.1\vsprojects\Release</AdditionalLibraryDirectories>
|
<AdditionalLibraryDirectories>..\OpenSSL\lib\VC;..\boost_1_52_0\stage\lib;..\protobuf\vsprojects\Release</AdditionalLibraryDirectories>
|
||||||
<AdditionalDependencies>libprotobuf.lib;ssleay32MD.lib;libeay32MD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
<AdditionalDependencies>libprotobuf.lib;ssleay32MD.lib;libeay32MD.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<OutputFile>$(OutDir)rippled.exe</OutputFile>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="src\cpp\database\database.cpp" />
|
<ClCompile Include="src\cpp\database\database.cpp" />
|
||||||
<ClCompile Include="src\cpp\database\sqlite3.c" />
|
<ClCompile Include="src\cpp\database\sqlite3.c" />
|
||||||
<ClCompile Include="src\cpp\database\SqliteDatabase.cpp" />
|
<ClCompile Include="src\cpp\database\SqliteDatabase.cpp" />
|
||||||
<ClCompile Include="src\cpp\database\win\windatabase.cpp" />
|
|
||||||
<ClCompile Include="src\cpp\json\json_reader.cpp" />
|
<ClCompile Include="src\cpp\json\json_reader.cpp" />
|
||||||
<ClCompile Include="src\cpp\json\json_value.cpp" />
|
<ClCompile Include="src\cpp\json\json_value.cpp" />
|
||||||
<ClCompile Include="src\cpp\json\json_writer.cpp" />
|
<ClCompile Include="src\cpp\json\json_writer.cpp" />
|
||||||
|
<ClCompile Include="src\cpp\ripple\AccountItems.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\AccountSetTransactor.cpp" />
|
<ClCompile Include="src\cpp\ripple\AccountSetTransactor.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\AccountState.cpp" />
|
<ClCompile Include="src\cpp\ripple\AccountState.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\Amount.cpp" />
|
<ClCompile Include="src\cpp\ripple\Amount.cpp" />
|
||||||
@@ -122,11 +124,13 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\LedgerMaster.cpp" />
|
<ClCompile Include="src\cpp\ripple\LedgerMaster.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\LedgerProposal.cpp" />
|
<ClCompile Include="src\cpp\ripple\LedgerProposal.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\LedgerTiming.cpp" />
|
<ClCompile Include="src\cpp\ripple\LedgerTiming.cpp" />
|
||||||
|
<ClCompile Include="src\cpp\ripple\LoadManager.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\LoadMonitor.cpp" />
|
<ClCompile Include="src\cpp\ripple\LoadMonitor.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\Log.cpp" />
|
<ClCompile Include="src\cpp\ripple\Log.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\main.cpp" />
|
<ClCompile Include="src\cpp\ripple\main.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\NetworkOPs.cpp" />
|
<ClCompile Include="src\cpp\ripple\NetworkOPs.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\NicknameState.cpp" />
|
<ClCompile Include="src\cpp\ripple\NicknameState.cpp" />
|
||||||
|
<ClCompile Include="src\cpp\ripple\Offer.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\OfferCancelTransactor.cpp" />
|
<ClCompile Include="src\cpp\ripple\OfferCancelTransactor.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\OfferCreateTransactor.cpp" />
|
<ClCompile Include="src\cpp\ripple\OfferCreateTransactor.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\Operation.cpp" />
|
<ClCompile Include="src\cpp\ripple\Operation.cpp" />
|
||||||
@@ -147,13 +151,13 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\ripple.pb.cc" />
|
<ClCompile Include="src\cpp\ripple\ripple.pb.cc" />
|
||||||
<ClCompile Include="src\cpp\ripple\RippleAddress.cpp" />
|
<ClCompile Include="src\cpp\ripple\RippleAddress.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\RippleCalc.cpp" />
|
<ClCompile Include="src\cpp\ripple\RippleCalc.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\RippleLines.cpp" />
|
|
||||||
<ClCompile Include="src\cpp\ripple\RippleState.cpp" />
|
<ClCompile Include="src\cpp\ripple\RippleState.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\rpc.cpp" />
|
<ClCompile Include="src\cpp\ripple\rpc.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\RPCDoor.cpp" />
|
<ClCompile Include="src\cpp\ripple\RPCDoor.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\RPCErr.cpp" />
|
<ClCompile Include="src\cpp\ripple\RPCErr.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\RPCHandler.cpp" />
|
<ClCompile Include="src\cpp\ripple\RPCHandler.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\RPCServer.cpp" />
|
<ClCompile Include="src\cpp\ripple\RPCServer.cpp" />
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCSub.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\ScriptData.cpp" />
|
<ClCompile Include="src\cpp\ripple\ScriptData.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\SerializedLedger.cpp" />
|
<ClCompile Include="src\cpp\ripple\SerializedLedger.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\SerializedObject.cpp" />
|
<ClCompile Include="src\cpp\ripple\SerializedObject.cpp" />
|
||||||
@@ -181,7 +185,6 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\ValidationCollection.cpp" />
|
<ClCompile Include="src\cpp\ripple\ValidationCollection.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\Wallet.cpp" />
|
<ClCompile Include="src\cpp\ripple\Wallet.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\WalletAddTransactor.cpp" />
|
<ClCompile Include="src\cpp\ripple\WalletAddTransactor.cpp" />
|
||||||
<ClCompile Include="src\cpp\ripple\WSConnection.cpp" />
|
|
||||||
<ClCompile Include="src\cpp\ripple\WSDoor.cpp" />
|
<ClCompile Include="src\cpp\ripple\WSDoor.cpp" />
|
||||||
<ClCompile Include="src\cpp\websocketpp\src\base64\base64.cpp" />
|
<ClCompile Include="src\cpp\websocketpp\src\base64\base64.cpp" />
|
||||||
<ClCompile Include="src\cpp\websocketpp\src\md5\md5.c" />
|
<ClCompile Include="src\cpp\websocketpp\src\md5\md5.c" />
|
||||||
@@ -298,8 +301,8 @@
|
|||||||
<None Include="SConstruct" />
|
<None Include="SConstruct" />
|
||||||
<CustomBuild Include="src\cpp\ripple\ripple.proto">
|
<CustomBuild Include="src\cpp\ripple\ripple.proto">
|
||||||
<FileType>Document</FileType>
|
<FileType>Document</FileType>
|
||||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">/code/protobuf/protoc -I=..\newcoin --cpp_out=\code\newcoin\ ..\newcoin/src/cpp/ripple/ripple.proto</Command>
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"../protobuf/protoc" -I=..\newcoin --cpp_out=..\newcoin\ ..\newcoin/src/cpp/ripple/ripple.proto</Command>
|
||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\code\newcoin\src\ripple.pb.h</Outputs>
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\newcoin\src\ripple.pb.h</Outputs>
|
||||||
</CustomBuild>
|
</CustomBuild>
|
||||||
<None Include="test\buster.js" />
|
<None Include="test\buster.js" />
|
||||||
<None Include="test\server.js" />
|
<None Include="test\server.js" />
|
||||||
|
|||||||
@@ -39,9 +39,6 @@
|
|||||||
<ClCompile Include="src\cpp\database\SqliteDatabase.cpp">
|
<ClCompile Include="src\cpp\database\SqliteDatabase.cpp">
|
||||||
<Filter>Source Files\database</Filter>
|
<Filter>Source Files\database</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\database\win\windatabase.cpp">
|
|
||||||
<Filter>Source Files\database</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\json\json_reader.cpp">
|
<ClCompile Include="src\cpp\json\json_reader.cpp">
|
||||||
<Filter>Source Files\json</Filter>
|
<Filter>Source Files\json</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -189,9 +186,6 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\RippleCalc.cpp">
|
<ClCompile Include="src\cpp\ripple\RippleCalc.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\RippleLines.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\RippleState.cpp">
|
<ClCompile Include="src\cpp\ripple\RippleState.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -279,9 +273,6 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\Wallet.cpp">
|
<ClCompile Include="src\cpp\ripple\Wallet.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="src\cpp\ripple\WSConnection.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="src\cpp\ripple\WSDoor.cpp">
|
<ClCompile Include="src\cpp\ripple\WSDoor.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@@ -354,6 +345,18 @@
|
|||||||
<ClCompile Include="src\cpp\ripple\RPCErr.cpp">
|
<ClCompile Include="src\cpp\ripple\RPCErr.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\LoadManager.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\AccountItems.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\Offer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="src\cpp\ripple\RPCSub.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="util\pugiconfig.hpp">
|
<ClInclude Include="util\pugiconfig.hpp">
|
||||||
|
|||||||
@@ -492,6 +492,7 @@ Json::Value RPCParser::parseCommand(std::string strMethod, Json::Value jvParams)
|
|||||||
{ "sign", &RPCParser::parseSignSubmit, 2, 2 },
|
{ "sign", &RPCParser::parseSignSubmit, 2, 2 },
|
||||||
{ "submit", &RPCParser::parseSignSubmit, 1, 2 },
|
{ "submit", &RPCParser::parseSignSubmit, 1, 2 },
|
||||||
{ "server_info", &RPCParser::parseAsIs, 0, 0 },
|
{ "server_info", &RPCParser::parseAsIs, 0, 0 },
|
||||||
|
{ "server_state", &RPCParser::parseAsIs, 0, 0 },
|
||||||
{ "stop", &RPCParser::parseAsIs, 0, 0 },
|
{ "stop", &RPCParser::parseAsIs, 0, 0 },
|
||||||
// { "transaction_entry", &RPCParser::parseTransactionEntry, -1, -1 },
|
// { "transaction_entry", &RPCParser::parseTransactionEntry, -1, -1 },
|
||||||
{ "tx", &RPCParser::parseTx, 1, 1 },
|
{ "tx", &RPCParser::parseTx, 1, 1 },
|
||||||
|
|||||||
@@ -718,7 +718,7 @@ LedgerAcquire::pointer LedgerAcquireMaster::findCreate(const uint256& hash)
|
|||||||
ptr->setTimer(); // Cannot call in constructor
|
ptr->setTimer(); // Cannot call in constructor
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
cLog(lsINFO) << "LedgerAcquireMaster acquiring ledger we already have";
|
cLog(lsDEBUG) << "LedgerAcquireMaster acquiring ledger we already have";
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -128,6 +128,7 @@ TER LedgerMaster::doTransaction(const SerializedTransaction& txn, TransactionEng
|
|||||||
|
|
||||||
bool LedgerMaster::haveLedgerRange(uint32 from, uint32 to)
|
bool LedgerMaster::haveLedgerRange(uint32 from, uint32 to)
|
||||||
{
|
{
|
||||||
|
boost::recursive_mutex::scoped_lock sl(mLock);
|
||||||
uint32 prevMissing = mCompleteLedgers.prevMissing(to + 1);
|
uint32 prevMissing = mCompleteLedgers.prevMissing(to + 1);
|
||||||
return (prevMissing == RangeSet::RangeSetAbsent) || (prevMissing < from);
|
return (prevMissing == RangeSet::RangeSetAbsent) || (prevMissing < from);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -67,10 +67,13 @@ public:
|
|||||||
ScopedLock getLock() { return ScopedLock(mLock); }
|
ScopedLock getLock() { return ScopedLock(mLock); }
|
||||||
|
|
||||||
// The current ledger is the ledger we believe new transactions should go in
|
// The current ledger is the ledger we believe new transactions should go in
|
||||||
Ledger::ref getCurrentLedger() { return mCurrentLedger; }
|
Ledger::ref getCurrentLedger() { return mCurrentLedger; }
|
||||||
|
|
||||||
// The finalized ledger is the last closed/accepted ledger
|
// The finalized ledger is the last closed/accepted ledger
|
||||||
Ledger::ref getClosedLedger() { return mFinalizedLedger; }
|
Ledger::ref getClosedLedger() { return mFinalizedLedger; }
|
||||||
|
|
||||||
|
// The published ledger is the last fully validated ledger
|
||||||
|
Ledger::ref getValidatedLedger() { return mPubLedger; }
|
||||||
|
|
||||||
TER doTransaction(const SerializedTransaction& txn, TransactionEngineParams params);
|
TER doTransaction(const SerializedTransaction& txn, TransactionEngineParams params);
|
||||||
|
|
||||||
@@ -82,7 +85,11 @@ public:
|
|||||||
|
|
||||||
void switchLedgers(Ledger::ref lastClosed, Ledger::ref newCurrent);
|
void switchLedgers(Ledger::ref lastClosed, Ledger::ref newCurrent);
|
||||||
|
|
||||||
std::string getCompleteLedgers() { return mCompleteLedgers.toString(); }
|
std::string getCompleteLedgers()
|
||||||
|
{
|
||||||
|
boost::recursive_mutex::scoped_lock sl(mLock);
|
||||||
|
return mCompleteLedgers.toString();
|
||||||
|
}
|
||||||
|
|
||||||
Ledger::pointer closeLedger(bool recoverHeldTransactions);
|
Ledger::pointer closeLedger(bool recoverHeldTransactions);
|
||||||
|
|
||||||
@@ -108,7 +115,11 @@ public:
|
|||||||
return mLedgerHistory.getLedgerByHash(hash);
|
return mLedgerHistory.getLedgerByHash(hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
void setLedgerRangePresent(uint32 minV, uint32 maxV) { mCompleteLedgers.setRange(minV, maxV); }
|
void setLedgerRangePresent(uint32 minV, uint32 maxV)
|
||||||
|
{
|
||||||
|
boost::recursive_mutex::scoped_lock sl(mLock);
|
||||||
|
mCompleteLedgers.setRange(minV, maxV);
|
||||||
|
}
|
||||||
|
|
||||||
void addHeldTransaction(const Transaction::pointer& trans);
|
void addHeldTransaction(const Transaction::pointer& trans);
|
||||||
void fixMismatch(Ledger::ref ledger);
|
void fixMismatch(Ledger::ref ledger);
|
||||||
|
|||||||
@@ -1008,7 +1008,7 @@ void NetworkOPs::pubServer()
|
|||||||
jvObj["type"] = "serverStatus";
|
jvObj["type"] = "serverStatus";
|
||||||
jvObj["server_status"] = strOperatingMode();
|
jvObj["server_status"] = strOperatingMode();
|
||||||
jvObj["load_base"] = theApp->getFeeTrack().getLoadBase();
|
jvObj["load_base"] = theApp->getFeeTrack().getLoadBase();
|
||||||
jvObj["load_fee"] = theApp->getFeeTrack().getLoadFactor();
|
jvObj["load_factor"] = theApp->getFeeTrack().getLoadFactor();
|
||||||
|
|
||||||
BOOST_FOREACH(InfoSub* ispListener, mSubServer)
|
BOOST_FOREACH(InfoSub* ispListener, mSubServer)
|
||||||
{
|
{
|
||||||
@@ -1093,7 +1093,7 @@ bool NetworkOPs::recvValidation(const SerializedValidation::pointer& val)
|
|||||||
return theApp->getValidations().addValidation(val);
|
return theApp->getValidations().addValidation(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
Json::Value NetworkOPs::getServerInfo()
|
Json::Value NetworkOPs::getServerInfo(bool human, bool admin)
|
||||||
{
|
{
|
||||||
Json::Value info = Json::objectValue;
|
Json::Value info = Json::objectValue;
|
||||||
|
|
||||||
@@ -1111,8 +1111,13 @@ Json::Value NetworkOPs::getServerInfo()
|
|||||||
if (mNeedNetworkLedger)
|
if (mNeedNetworkLedger)
|
||||||
info["network_ledger"] = "waiting";
|
info["network_ledger"] = "waiting";
|
||||||
|
|
||||||
if (theConfig.VALIDATION_PUB.isValid())
|
if (admin)
|
||||||
info["pubkey_validator"] = theConfig.VALIDATION_PUB.humanNodePublic();
|
{
|
||||||
|
if (theConfig.VALIDATION_PUB.isValid())
|
||||||
|
info["pubkey_validator"] = theConfig.VALIDATION_PUB.humanNodePublic();
|
||||||
|
else
|
||||||
|
info["pubkey_validator"] = "none";
|
||||||
|
}
|
||||||
info["pubkey_node"] = theApp->getWallet().getNodePublic().humanNodePublic();
|
info["pubkey_node"] = theApp->getWallet().getNodePublic().humanNodePublic();
|
||||||
|
|
||||||
|
|
||||||
@@ -1121,29 +1126,58 @@ Json::Value NetworkOPs::getServerInfo()
|
|||||||
|
|
||||||
Json::Value lastClose = Json::objectValue;
|
Json::Value lastClose = Json::objectValue;
|
||||||
lastClose["proposers"] = theApp->getOPs().getPreviousProposers();
|
lastClose["proposers"] = theApp->getOPs().getPreviousProposers();
|
||||||
lastClose["converge_time"] = static_cast<double>(theApp->getOPs().getPreviousConvergeTime()) / 1000.0;
|
if (human)
|
||||||
|
lastClose["converge_time_s"] = static_cast<double>(theApp->getOPs().getPreviousConvergeTime()) / 1000.0;
|
||||||
|
else
|
||||||
|
lastClose["converge_time"] = Json::Int(theApp->getOPs().getPreviousConvergeTime());
|
||||||
info["last_close"] = lastClose;
|
info["last_close"] = lastClose;
|
||||||
|
|
||||||
// if (mConsensus)
|
// if (mConsensus)
|
||||||
// info["consensus"] = mConsensus->getJson();
|
// info["consensus"] = mConsensus->getJson();
|
||||||
|
|
||||||
info["load"] = theApp->getJobQueue().getJson();
|
if (admin)
|
||||||
info["load_factor"] =
|
info["load"] = theApp->getJobQueue().getJson();
|
||||||
static_cast<double>(theApp->getFeeTrack().getLoadBase()) / theApp->getFeeTrack().getLoadFactor();
|
|
||||||
|
if (!human)
|
||||||
|
{
|
||||||
|
info["load_base"] = theApp->getFeeTrack().getLoadBase();
|
||||||
|
info["load_factor"] = theApp->getFeeTrack().getLoadFactor();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
info["load_factor"] =
|
||||||
|
static_cast<double>(theApp->getFeeTrack().getLoadBase()) / theApp->getFeeTrack().getLoadFactor();
|
||||||
|
|
||||||
|
bool valid = false;
|
||||||
|
Ledger::pointer lpClosed = getValidatedLedger();
|
||||||
|
if (lpClosed)
|
||||||
|
valid = true;
|
||||||
|
else
|
||||||
|
lpClosed = getClosedLedger();
|
||||||
|
|
||||||
Ledger::pointer lpClosed = getClosedLedger();
|
|
||||||
if (lpClosed)
|
if (lpClosed)
|
||||||
{
|
{
|
||||||
uint64 baseFee = lpClosed->getBaseFee();
|
uint64 baseFee = lpClosed->getBaseFee();
|
||||||
uint64 baseRef = lpClosed->getReferenceFeeUnits();
|
uint64 baseRef = lpClosed->getReferenceFeeUnits();
|
||||||
Json::Value l(Json::objectValue);
|
Json::Value l(Json::objectValue);
|
||||||
l["seq"] = Json::UInt(lpClosed->getLedgerSeq());
|
l["seq"] = Json::UInt(lpClosed->getLedgerSeq());
|
||||||
l["hash"] = lpClosed->getHash().GetHex();
|
l["hash"] = lpClosed->getHash().GetHex();
|
||||||
l["base_fee"] = static_cast<double>(Json::UInt(baseFee)) / SYSTEM_CURRENCY_PARTS;
|
l["validated"] = valid;
|
||||||
l["reserve_base"] =
|
if (!human)
|
||||||
static_cast<double>(Json::UInt(lpClosed->getReserve(0) * baseFee / baseRef)) / SYSTEM_CURRENCY_PARTS;
|
{
|
||||||
l["reserve_inc"] =
|
l["base_fee"] = Json::Value::UInt(baseFee);
|
||||||
static_cast<double>(Json::UInt(lpClosed->getReserveInc() * baseFee / baseRef)) / SYSTEM_CURRENCY_PARTS;
|
l["reserve_base"] = Json::Value::UInt(lpClosed->getReserve(0));
|
||||||
|
l["reserve_inc"] = Json::Value::UInt(lpClosed->getReserveInc());
|
||||||
|
l["close_time"] = Json::Value::UInt(lpClosed->getCloseTimeNC());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
l["base_fee_xrp"] = static_cast<double>(Json::UInt(baseFee)) / SYSTEM_CURRENCY_PARTS;
|
||||||
|
l["reserve_base_xrp"] =
|
||||||
|
static_cast<double>(Json::UInt(lpClosed->getReserve(0) * baseFee / baseRef)) / SYSTEM_CURRENCY_PARTS;
|
||||||
|
l["reserve_inc_xrp"] =
|
||||||
|
static_cast<double>(Json::UInt(lpClosed->getReserveInc() * baseFee / baseRef)) / SYSTEM_CURRENCY_PARTS;
|
||||||
|
l["age"] = Json::UInt(getCloseTimeNC() - lpClosed->getCloseTimeNC());
|
||||||
|
}
|
||||||
info["closed_ledger"] = l;
|
info["closed_ledger"] = l;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1521,7 +1555,7 @@ bool NetworkOPs::subServer(InfoSub* ispListener, Json::Value& jvResult)
|
|||||||
jvResult["random"] = uRandom.ToString();
|
jvResult["random"] = uRandom.ToString();
|
||||||
jvResult["server_status"] = strOperatingMode();
|
jvResult["server_status"] = strOperatingMode();
|
||||||
jvResult["load_base"] = theApp->getFeeTrack().getLoadBase();
|
jvResult["load_base"] = theApp->getFeeTrack().getLoadBase();
|
||||||
jvResult["load_fee"] = theApp->getFeeTrack().getLoadFactor();
|
jvResult["load_factor"] = theApp->getFeeTrack().getLoadFactor();
|
||||||
|
|
||||||
return mSubServer.insert(ispListener).second;
|
return mSubServer.insert(ispListener).second;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ public:
|
|||||||
std::string strOperatingMode();
|
std::string strOperatingMode();
|
||||||
|
|
||||||
Ledger::ref getClosedLedger() { return mLedgerMaster->getClosedLedger(); }
|
Ledger::ref getClosedLedger() { return mLedgerMaster->getClosedLedger(); }
|
||||||
|
Ledger::ref getValidatedLedger() { return mLedgerMaster->getValidatedLedger(); }
|
||||||
Ledger::ref getCurrentLedger() { return mLedgerMaster->getCurrentLedger(); }
|
Ledger::ref getCurrentLedger() { return mLedgerMaster->getCurrentLedger(); }
|
||||||
Ledger::pointer getLedgerByHash(const uint256& hash) { return mLedgerMaster->getLedgerByHash(hash); }
|
Ledger::pointer getLedgerByHash(const uint256& hash) { return mLedgerMaster->getLedgerByHash(hash); }
|
||||||
Ledger::pointer getLedgerBySeq(const uint32 seq) { return mLedgerMaster->getLedgerBySeq(seq); }
|
Ledger::pointer getLedgerBySeq(const uint32 seq) { return mLedgerMaster->getLedgerBySeq(seq); }
|
||||||
@@ -243,7 +244,7 @@ public:
|
|||||||
int getPreviousConvergeTime() { return mLastCloseConvergeTime; }
|
int getPreviousConvergeTime() { return mLastCloseConvergeTime; }
|
||||||
uint32 getLastCloseTime() { return mLastCloseTime; }
|
uint32 getLastCloseTime() { return mLastCloseTime; }
|
||||||
void setLastCloseTime(uint32 t) { mLastCloseTime = t; }
|
void setLastCloseTime(uint32 t) { mLastCloseTime = t; }
|
||||||
Json::Value getServerInfo();
|
Json::Value getServerInfo(bool human, bool admin);
|
||||||
uint32 acceptLedger();
|
uint32 acceptLedger();
|
||||||
boost::unordered_map<uint160,
|
boost::unordered_map<uint160,
|
||||||
std::list<LedgerProposal::pointer> >& peekStoredProposals() { return mStoredProposals; }
|
std::list<LedgerProposal::pointer> >& peekStoredProposals() { return mStoredProposals; }
|
||||||
|
|||||||
@@ -1392,7 +1392,7 @@ void Peer::recvGetLedger(ripple::TMGetLedger& packet)
|
|||||||
logMe += "LedgerHash:"; logMe += ledgerhash.GetHex();
|
logMe += "LedgerHash:"; logMe += ledgerhash.GetHex();
|
||||||
ledger = theApp->getLedgerMaster().getLedgerByHash(ledgerhash);
|
ledger = theApp->getLedgerMaster().getLedgerByHash(ledgerhash);
|
||||||
|
|
||||||
tLog(!ledger, lsINFO) << "Don't have ledger " << ledgerhash;
|
tLog(!ledger, lsDEBUG) << "Don't have ledger " << ledgerhash;
|
||||||
if (!ledger && (packet.has_querytype() && !packet.has_requestcookie()))
|
if (!ledger && (packet.has_querytype() && !packet.has_requestcookie()))
|
||||||
{
|
{
|
||||||
std::vector<Peer::pointer> peerList = theApp->getConnectionPool().getPeerVector();
|
std::vector<Peer::pointer> peerList = theApp->getConnectionPool().getPeerVector();
|
||||||
@@ -1417,7 +1417,7 @@ void Peer::recvGetLedger(ripple::TMGetLedger& packet)
|
|||||||
else if (packet.has_ledgerseq())
|
else if (packet.has_ledgerseq())
|
||||||
{
|
{
|
||||||
ledger = theApp->getLedgerMaster().getLedgerBySeq(packet.ledgerseq());
|
ledger = theApp->getLedgerMaster().getLedgerBySeq(packet.ledgerseq());
|
||||||
tLog(!ledger, lsINFO) << "Don't have ledger " << packet.ledgerseq();
|
tLog(!ledger, lsDEBUG) << "Don't have ledger " << packet.ledgerseq();
|
||||||
}
|
}
|
||||||
else if (packet.has_ltype() && (packet.ltype() == ripple::ltCURRENT))
|
else if (packet.has_ltype() && (packet.ltype() == ripple::ltCURRENT))
|
||||||
ledger = theApp->getLedgerMaster().getCurrentLedger();
|
ledger = theApp->getLedgerMaster().getCurrentLedger();
|
||||||
|
|||||||
@@ -1305,7 +1305,16 @@ Json::Value RPCHandler::doServerInfo(Json::Value)
|
|||||||
{
|
{
|
||||||
Json::Value ret(Json::objectValue);
|
Json::Value ret(Json::objectValue);
|
||||||
|
|
||||||
ret["info"] = theApp->getOPs().getServerInfo();
|
ret["info"] = theApp->getOPs().getServerInfo(true, mRole == ADMIN);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
Json::Value RPCHandler::doServerState(Json::Value)
|
||||||
|
{
|
||||||
|
Json::Value ret(Json::objectValue);
|
||||||
|
|
||||||
|
ret["state"] = theApp->getOPs().getServerInfo(false, mRole == ADMIN);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -2589,7 +2598,8 @@ Json::Value RPCHandler::doCommand(Json::Value& jvRequest, int iRole)
|
|||||||
{ "ripple_path_find", &RPCHandler::doRipplePathFind, false, optCurrent },
|
{ "ripple_path_find", &RPCHandler::doRipplePathFind, false, optCurrent },
|
||||||
{ "sign", &RPCHandler::doSign, false, optCurrent },
|
{ "sign", &RPCHandler::doSign, false, optCurrent },
|
||||||
{ "submit", &RPCHandler::doSubmit, false, optCurrent },
|
{ "submit", &RPCHandler::doSubmit, false, optCurrent },
|
||||||
{ "server_info", &RPCHandler::doServerInfo, true, optNone },
|
{ "server_info", &RPCHandler::doServerInfo, false, optNone },
|
||||||
|
{ "server_state", &RPCHandler::doServerState, false, optNone },
|
||||||
{ "stop", &RPCHandler::doStop, true, optNone },
|
{ "stop", &RPCHandler::doStop, true, optNone },
|
||||||
{ "transaction_entry", &RPCHandler::doTransactionEntry, false, optCurrent },
|
{ "transaction_entry", &RPCHandler::doTransactionEntry, false, optCurrent },
|
||||||
{ "tx", &RPCHandler::doTx, false, optNetwork },
|
{ "tx", &RPCHandler::doTx, false, optNetwork },
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ class RPCHandler
|
|||||||
Json::Value doProfile(Json::Value params);
|
Json::Value doProfile(Json::Value params);
|
||||||
Json::Value doRandom(Json::Value jvRequest);
|
Json::Value doRandom(Json::Value jvRequest);
|
||||||
Json::Value doRipplePathFind(Json::Value jvRequest);
|
Json::Value doRipplePathFind(Json::Value jvRequest);
|
||||||
Json::Value doServerInfo(Json::Value params);
|
Json::Value doServerInfo(Json::Value params); // for humans
|
||||||
|
Json::Value doServerState(Json::Value params); // for machines
|
||||||
Json::Value doSessionClose(Json::Value params);
|
Json::Value doSessionClose(Json::Value params);
|
||||||
Json::Value doSessionOpen(Json::Value params);
|
Json::Value doSessionOpen(Json::Value params);
|
||||||
Json::Value doStop(Json::Value params);
|
Json::Value doStop(Json::Value params);
|
||||||
|
|||||||
Reference in New Issue
Block a user