2012-04-06 08:56:52 +02:00
|
|
|
#ifndef ENDPOINTMANAGER_H
|
|
|
|
#define ENDPOINTMANAGER_H
|
2012-03-28 13:24:49 +02:00
|
|
|
|
|
|
|
namespace icinga
|
|
|
|
{
|
|
|
|
|
2012-04-06 08:56:52 +02:00
|
|
|
class I2_ICINGA_API EndpointManager : public Object
|
2012-03-28 13:24:49 +02:00
|
|
|
{
|
2012-04-02 20:50:35 +02:00
|
|
|
list<JsonRpcServer::Ptr> m_Servers;
|
|
|
|
list<JsonRpcClient::Ptr> m_Clients;
|
2012-04-04 12:22:46 +02:00
|
|
|
list<Timer::Ptr> m_ReconnectTimers;
|
2012-04-06 08:56:52 +02:00
|
|
|
list<Endpoint::Ptr> m_Endpoints;
|
2012-04-04 15:09:59 +02:00
|
|
|
string m_Identity;
|
2012-03-28 13:24:49 +02:00
|
|
|
|
2012-04-02 20:50:35 +02:00
|
|
|
int NewClientHandler(NewClientEventArgs::Ptr ncea);
|
|
|
|
int CloseClientHandler(EventArgs::Ptr ea);
|
2012-04-04 15:09:59 +02:00
|
|
|
int ErrorClientHandler(SocketErrorEventArgs::Ptr ea);
|
2012-04-04 12:22:46 +02:00
|
|
|
int ReconnectClientHandler(TimerEventArgs::Ptr ea);
|
2012-04-02 20:50:35 +02:00
|
|
|
int NewMessageHandler(NewMessageEventArgs::Ptr nmea);
|
2012-03-28 13:24:49 +02:00
|
|
|
|
2012-04-04 12:22:46 +02:00
|
|
|
void RegisterClient(JsonRpcClient::Ptr server);
|
|
|
|
void UnregisterClient(JsonRpcClient::Ptr server);
|
2012-03-28 13:24:49 +02:00
|
|
|
|
2012-04-02 20:50:35 +02:00
|
|
|
void RegisterServer(JsonRpcServer::Ptr server);
|
|
|
|
void UnregisterServer(JsonRpcServer::Ptr server);
|
2012-04-06 08:56:52 +02:00
|
|
|
|
2012-04-04 12:22:46 +02:00
|
|
|
public:
|
2012-04-06 08:56:52 +02:00
|
|
|
typedef shared_ptr<EndpointManager> Ptr;
|
|
|
|
typedef weak_ptr<EndpointManager> WeakPtr;
|
2012-03-28 13:24:49 +02:00
|
|
|
|
2012-04-04 15:09:59 +02:00
|
|
|
void SetIdentity(string identity);
|
2012-04-06 08:56:52 +02:00
|
|
|
string GetIdentity(void) const;
|
2012-04-04 15:09:59 +02:00
|
|
|
|
2012-04-04 12:22:46 +02:00
|
|
|
void AddListener(unsigned short port);
|
|
|
|
void AddConnection(string host, short port);
|
2012-03-28 13:24:49 +02:00
|
|
|
|
2012-04-06 08:56:52 +02:00
|
|
|
void RegisterEndpoint(Endpoint::Ptr endpoint);
|
|
|
|
void UnregisterEndpoint(Endpoint::Ptr endpoint);
|
2012-03-31 16:01:31 +02:00
|
|
|
|
2012-04-16 16:27:41 +02:00
|
|
|
void SendAnycastRequest(Endpoint::Ptr sender, JsonRpcRequest::Ptr request);
|
|
|
|
void SendMulticastRequest(Endpoint::Ptr sender, JsonRpcRequest::Ptr request);
|
2012-03-28 13:24:49 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2012-04-06 08:56:52 +02:00
|
|
|
#endif /* ENDPOINTMANAGER_H */
|