mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-25 05:25:55 +00:00
Add event allowing client to track server's network connectivity.
This commit is contained in:
@@ -867,8 +867,10 @@ void NetworkOPs::consensusViewChange()
|
||||
void NetworkOPs::setMode(OperatingMode om)
|
||||
{
|
||||
if (mMode == om) return;
|
||||
|
||||
if ((om >= omCONNECTED) && (mMode == omDISCONNECTED))
|
||||
mConnectTime = boost::posix_time::second_clock::universal_time();
|
||||
|
||||
Log lg((om < mMode) ? lsWARNING : lsINFO);
|
||||
if (om == omDISCONNECTED)
|
||||
lg << "STATE->Disconnected";
|
||||
@@ -878,6 +880,25 @@ void NetworkOPs::setMode(OperatingMode om)
|
||||
lg << "STATE->Tracking";
|
||||
else
|
||||
lg << "STATE->Full";
|
||||
|
||||
if ((om == omDISCONNECTED) || (mMode == omDISCONNECTED))
|
||||
{
|
||||
boost::recursive_mutex::scoped_lock sl(mMonitorLock);
|
||||
|
||||
if (!mSubServer.empty())
|
||||
{
|
||||
Json::Value jvObj(Json::objectValue);
|
||||
|
||||
jvObj["type"] = "serverStatus";
|
||||
jvObj["server_status"] = om >= omCONNECTED ? "ok" : "noNetwork";
|
||||
|
||||
BOOST_FOREACH(InfoSub* ispListener, mSubServer)
|
||||
{
|
||||
ispListener->send(jvObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mMode = om;
|
||||
}
|
||||
|
||||
|
||||
@@ -2084,6 +2084,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest)
|
||||
if(streamName=="server")
|
||||
{
|
||||
mNetOps->subServer(mInfoSub, jvResult);
|
||||
jvResult["server_status"] = mNetOps->available() ? "ok" : "noNetwork";
|
||||
}else if(streamName=="ledger")
|
||||
{
|
||||
mNetOps->subLedger(mInfoSub, jvResult);
|
||||
|
||||
Reference in New Issue
Block a user