mirror of https://github.com/Icinga/icinga2.git
parent
5c23beb6a9
commit
fbc638e0b8
|
@ -514,8 +514,19 @@ void ApiListener::ApiTimerHandler(void)
|
|||
lmessage->Set("method", "log::SetLogPosition");
|
||||
lmessage->Set("params", lparams);
|
||||
|
||||
BOOST_FOREACH(const JsonRpcConnection::Ptr& client, endpoint->GetClients())
|
||||
client->SendMessage(lmessage);
|
||||
double maxTs = 0;
|
||||
|
||||
BOOST_FOREACH(const JsonRpcConnection::Ptr& client, endpoint->GetClients()) {
|
||||
if (client->GetTimestamp() > maxTs)
|
||||
maxTs = client->GetTimestamp();
|
||||
}
|
||||
|
||||
BOOST_FOREACH(const JsonRpcConnection::Ptr& client, endpoint->GetClients()) {
|
||||
if (client->GetTimestamp() != maxTs)
|
||||
client->Disconnect();
|
||||
else
|
||||
client->SendMessage(lmessage);
|
||||
}
|
||||
|
||||
Log(LogNotice, "ApiListener")
|
||||
<< "Setting log position for identity '" << endpoint->GetName() << "': "
|
||||
|
@ -580,8 +591,19 @@ void ApiListener::SyncSendMessage(const Endpoint::Ptr& endpoint, const Dictionar
|
|||
Log(LogNotice, "ApiListener")
|
||||
<< "Sending message to '" << endpoint->GetName() << "'";
|
||||
|
||||
BOOST_FOREACH(const JsonRpcConnection::Ptr& client, endpoint->GetClients())
|
||||
double maxTs = 0;
|
||||
|
||||
BOOST_FOREACH(const JsonRpcConnection::Ptr& client, endpoint->GetClients()) {
|
||||
if (client->GetTimestamp() > maxTs)
|
||||
maxTs = client->GetTimestamp();
|
||||
}
|
||||
|
||||
BOOST_FOREACH(const JsonRpcConnection::Ptr& client, endpoint->GetClients()) {
|
||||
if (client->GetTimestamp() != maxTs)
|
||||
continue;
|
||||
|
||||
client->SendMessage(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ static Timer::Ptr l_JsonRpcConnectionTimeoutTimer;
|
|||
JsonRpcConnection::JsonRpcConnection(const String& identity, bool authenticated,
|
||||
const TlsStream::Ptr& stream, ConnectionRole role)
|
||||
: m_Identity(identity), m_Authenticated(authenticated), m_Stream(stream),
|
||||
m_Role(role), m_Seen(Utility::GetTime()),
|
||||
m_Role(role), m_Timestamp(Utility::GetTime()), m_Seen(Utility::GetTime()),
|
||||
m_NextHeartbeat(0), m_HeartbeatTimeout(0)
|
||||
{
|
||||
boost::call_once(l_JsonRpcConnectionOnceFlag, &JsonRpcConnection::StaticInitialize);
|
||||
|
@ -66,6 +66,11 @@ void JsonRpcConnection::Start(void)
|
|||
DataAvailableHandler();
|
||||
}
|
||||
|
||||
double JsonRpcConnection::GetTimestamp(void) const
|
||||
{
|
||||
return m_Timestamp;
|
||||
}
|
||||
|
||||
String JsonRpcConnection::GetIdentity(void) const
|
||||
{
|
||||
return m_Identity;
|
||||
|
|
|
@ -57,6 +57,7 @@ public:
|
|||
|
||||
void Start(void);
|
||||
|
||||
double GetTimestamp(void) const;
|
||||
String GetIdentity(void) const;
|
||||
bool IsAuthenticated(void) const;
|
||||
Endpoint::Ptr GetEndpoint(void) const;
|
||||
|
@ -76,6 +77,7 @@ private:
|
|||
Endpoint::Ptr m_Endpoint;
|
||||
TlsStream::Ptr m_Stream;
|
||||
ConnectionRole m_Role;
|
||||
double m_Timestamp;
|
||||
double m_Seen;
|
||||
double m_NextHeartbeat;
|
||||
double m_HeartbeatTimeout;
|
||||
|
|
Loading…
Reference in New Issue