void ApiClient::Start(void)
{
m_Stream->RegisterDataHandler(boost::bind(&ApiClient::DataAvailableHandler, this));
+
+ m_TimeoutTimer = new Timer();
+ m_TimeoutTimer->OnTimerExpired.connect(boost::bind(&ApiClient::TimeoutTimerHandler, this));
+ m_TimeoutTimer->SetInterval(15);
+ m_TimeoutTimer->Start();
}
String ApiClient::GetIdentity(void) const
if (m_Stream->IsEof())
return;
JsonRpc::SendMessage(m_Stream, message);
- if (message->Get("method") != "log::SetLogPosition")
- m_Seen = Utility::GetTime();
} catch (const std::exception& ex) {
std::ostringstream info;
info << "Error while sending JSON-RPC message for identity '" << m_Identity << "'";
if (srs != StatusNewItem)
return false;
- if (message->Get("method") != "log::SetLogPosition")
- m_Seen = Utility::GetTime();
+ m_Seen = Utility::GetTime();
if (m_Endpoint && message->Contains("ts")) {
double ts = message->Get("ts");
return result;
}
+
+void ApiClient::TimeoutTimerHandler(void)
+{
+ if (Utility::GetTime() - 60 > m_Seen)
+ Disconnect();
+}
ConnectionRole m_Role;
double m_Seen;
double m_NextHeartbeat;
+ Timer::Ptr m_TimeoutTimer;
StreamReadContext m_Context;
bool ProcessMessage(void);
void DataAvailableHandler(void);
void SendMessageSync(const Dictionary::Ptr& request);
+
+ void TimeoutTimerHandler(void);
};
}