#ifndef JSONRPCENDPOINT_H #define JSONRPCENDPOINT_H namespace icinga { class I2_ICINGA_API JsonRpcEndpoint : public Endpoint { private: shared_ptr m_SSLContext; string m_Address; JsonRpcClient::Ptr m_Client; map m_PendingCalls; int NewMessageHandler(const NewMessageEventArgs& nmea); int ClientClosedHandler(const EventArgs& ea); int ClientErrorHandler(const SocketErrorEventArgs& ea); int VerifyCertificateHandler(const VerifyCertificateEventArgs& ea); public: typedef shared_ptr Ptr; typedef weak_ptr WeakPtr; void Connect(string node, string service, shared_ptr sslContext); JsonRpcClient::Ptr GetClient(void); void SetClient(JsonRpcClient::Ptr client); void SetAddress(string address); virtual string GetAddress(void) const; virtual bool IsLocal(void) const; virtual bool IsConnected(void) const; virtual void ProcessRequest(Endpoint::Ptr sender, const JsonRpcRequest& message); virtual void ProcessResponse(Endpoint::Ptr sender, const JsonRpcResponse& message); virtual void Stop(void); }; } #endif /* JSONRPCENDPOINT_H */