Revert workaround, fix ryzom/ryzomcore#601

ryzomclassic-develop
kaetemi 5 years ago
parent 0528df7f0b
commit af6c6b64c3

@ -141,7 +141,7 @@ public:
(*ici).second.Expected = 0; (*ici).second.Expected = 0;
} }
// Rebuild "expected" counters // Rebuild "expected" counters
for (uint i = 0; i != var.size(); ++i) for (size_t i = 0; i != var.size(); ++i)
{ {
++m_Instances[var.asString(i)].Expected; ++m_Instances[var.asString(i)].Expected;
} }
@ -150,7 +150,7 @@ public:
/// Add a service instance /// Add a service instance
void addInstance(const std::string &serviceName, TServiceId sid) void addInstance(const std::string &serviceName, TServiceId sid)
{ {
m_Instances[serviceName].Running.insert(sid); ++m_Instances[serviceName].Running;
} }
/// Remove a service instance /// Remove a service instance
@ -159,10 +159,10 @@ public:
CInstances::iterator ici = m_Instances.find(serviceName); CInstances::iterator ici = m_Instances.find(serviceName);
if (ici != m_Instances.end()) if (ici != m_Instances.end())
{ {
(*ici).second.Running.erase(sid); --(*ici).second.Running;
// Remove from the map only if not part of the expected list // Remove from the map only if not part of the expected list
if (((*ici).second.Expected == 0) && ((*ici).second.Running.size() == 0)) if (((*ici).second.Expected == 0) && ((*ici).second.Running == 0))
{ {
m_Instances.erase(ici); m_Instances.erase(ici);
} }
@ -194,7 +194,7 @@ public:
log.displayNL("%s: %s (%u expected, %u running)", log.displayNL("%s: %s (%u expected, %u running)",
(*ici).first.c_str(), (*ici).first.c_str(),
(*ici).second.Expected ? ((*ici).second.isOnlineAsExpected() ? "ONLINE" : "MISSING") : "OPTIONAL", (*ici).second.Expected ? ((*ici).second.isOnlineAsExpected() ? "ONLINE" : "MISSING") : "OPTIONAL",
(*ici).second.Expected, (*ici).second.Running.size()); (*ici).second.Expected, (*ici).second.Running);
} }
} }
@ -203,14 +203,15 @@ private:
{ {
TInstanceCounters() TInstanceCounters()
: Expected(0) : Expected(0)
, Running(0)
{ {
} }
// If not expected, count as online as well // If not expected, count as online as well
bool isOnlineAsExpected() const { return Running.size() >= Expected; } bool isOnlineAsExpected() const { return Running >= Expected; }
uint Expected; int Expected;
std::set<TServiceId> Running; int Running;
}; };
typedef std::map<std::string, TInstanceCounters> CInstances; typedef std::map<std::string, TInstanceCounters> CInstances;

Loading…
Cancel
Save