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)
|
void NetworkOPs::setMode(OperatingMode om)
|
||||||
{
|
{
|
||||||
if (mMode == om) return;
|
if (mMode == om) return;
|
||||||
|
|
||||||
if ((om >= omCONNECTED) && (mMode == omDISCONNECTED))
|
if ((om >= omCONNECTED) && (mMode == omDISCONNECTED))
|
||||||
mConnectTime = boost::posix_time::second_clock::universal_time();
|
mConnectTime = boost::posix_time::second_clock::universal_time();
|
||||||
|
|
||||||
Log lg((om < mMode) ? lsWARNING : lsINFO);
|
Log lg((om < mMode) ? lsWARNING : lsINFO);
|
||||||
if (om == omDISCONNECTED)
|
if (om == omDISCONNECTED)
|
||||||
lg << "STATE->Disconnected";
|
lg << "STATE->Disconnected";
|
||||||
@@ -878,6 +880,25 @@ void NetworkOPs::setMode(OperatingMode om)
|
|||||||
lg << "STATE->Tracking";
|
lg << "STATE->Tracking";
|
||||||
else
|
else
|
||||||
lg << "STATE->Full";
|
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;
|
mMode = om;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2084,6 +2084,7 @@ Json::Value RPCHandler::doSubscribe(Json::Value jvRequest)
|
|||||||
if(streamName=="server")
|
if(streamName=="server")
|
||||||
{
|
{
|
||||||
mNetOps->subServer(mInfoSub, jvResult);
|
mNetOps->subServer(mInfoSub, jvResult);
|
||||||
|
jvResult["server_status"] = mNetOps->available() ? "ok" : "noNetwork";
|
||||||
}else if(streamName=="ledger")
|
}else if(streamName=="ledger")
|
||||||
{
|
{
|
||||||
mNetOps->subLedger(mInfoSub, jvResult);
|
mNetOps->subLedger(mInfoSub, jvResult);
|
||||||
|
|||||||
Reference in New Issue
Block a user