fix SysView shitting the bed when the JSON object for a peer is in an unknown state because it is state transitioning or still connecting;

pull/85/head
Bryan Biedenkapp 12 months ago
parent 7d6d4f4134
commit dbf67a4211

@ -155,18 +155,26 @@ public:
}
}
std::string identity = "* UNK *";
std::string software = "**INVALID**";
uint32_t chNo = 0U;
uint8_t chId = 0U;
std::ostringstream txOss;
std::ostringstream rxOss;
if (peerObj["config"].is<json::object>()) {
json::object peerConfig = peerObj["config"].get<json::object>();
std::string identity = peerConfig["identity"].getDefault<std::string>("");
std::string software = peerConfig["software"].getDefault<std::string>("");
identity = peerConfig["identity"].getDefault<std::string>("* UNK *");
software = peerConfig["software"].getDefault<std::string>("**INVALID**");
if (peerConfig["channel"].is<json::object>()) {
json::object channel = peerConfig["channel"].get<json::object>();
uint32_t chNo = (uint32_t)channel["channelNo"].getDefault<int>(1);
uint8_t chId = channel["channelId"].getDefault<uint8_t>(0U);
g_peerIdentityNameMap[peerId] = std::string(identity);
std::ostringstream txOss;
std::ostringstream rxOss;
if (chNo > 0U) {
IdenTable idenEntry = g_idenTable->find(chId);
if (idenEntry.baseFrequency() == 0U) {
@ -186,6 +194,8 @@ public:
txOss << std::fixed << std::setprecision(5) << (double)(txFrequency / 1000000.0);
rxOss << std::fixed << std::setprecision(5) << (double)(rxFrequency / 1000000.0);
}
}
}
// pad peer IDs properly
std::ostringstream peerOss;
@ -278,7 +288,7 @@ private:
m_listView.addColumn("CC Peer ID", 10);
m_listView.addColumn("VC Count", 8);
m_listView.addColumn("Connected", 5);
m_listView.addColumn("State", 15);
m_listView.addColumn("State", 18);
m_listView.addColumn("Pings Received", 8);
m_listView.addColumn("Ch. ID", 8);
m_listView.addColumn("Ch. No", 8);

Loading…
Cancel
Save

Powered by TurnKey Linux.