From 22ad7b05dcf33ecbd4fd9a246966dacbf96b7d28 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Tue, 8 May 2012 13:40:22 +0200 Subject: [PATCH] Updated configrpc module to work with the new discovery component. --- components/configrpc/configrpccomponent.cpp | 16 ++++++++++++---- components/configrpc/configrpccomponent.h | 3 ++- components/discovery/discovery.vcxproj.filters | 12 ++++++++++++ components/discovery/discoverycomponent.cpp | 4 ++-- 4 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 components/discovery/discovery.vcxproj.filters diff --git a/components/configrpc/configrpccomponent.cpp b/components/configrpc/configrpccomponent.cpp index 7cfdf069b..b7ea05633 100644 --- a/components/configrpc/configrpccomponent.cpp +++ b/components/configrpc/configrpccomponent.cpp @@ -28,9 +28,9 @@ void ConfigRpcComponent::Start(void) m_ConfigRpcEndpoint->RegisterMethodSource("config::PropertyChanged"); } - m_ConfigRpcEndpoint->RegisterMethodHandler("message::Welcome", - bind_weak(&ConfigRpcComponent::WelcomeMessageHandler, shared_from_this())); + endpointManager->OnNewEndpoint += bind_weak(&ConfigRpcComponent::NewEndpointHandler, shared_from_this()); + m_ConfigRpcEndpoint->RegisterMethodSource("config::FetchObjects"); m_ConfigRpcEndpoint->RegisterMethodHandler("config::ObjectCreated", bind_weak(&ConfigRpcComponent::RemoteObjectUpdatedHandler, shared_from_this())); m_ConfigRpcEndpoint->RegisterMethodHandler("config::ObjectRemoved", @@ -46,12 +46,20 @@ void ConfigRpcComponent::Stop(void) // TODO: implement } -int ConfigRpcComponent::WelcomeMessageHandler(const NewRequestEventArgs& ea) +int ConfigRpcComponent::NewEndpointHandler(const NewEndpointEventArgs& ea) +{ + ea.Endpoint->OnSessionEstablished += bind_weak(&ConfigRpcComponent::SessionEstablishedHandler, shared_from_this()); + + return 0; +} + +int ConfigRpcComponent::SessionEstablishedHandler(const EventArgs& ea) { JsonRpcRequest request; request.SetMethod("config::FetchObjects"); - GetEndpointManager()->SendUnicastRequest(m_ConfigRpcEndpoint, ea.Sender, request); + Endpoint::Ptr endpoint = static_pointer_cast(ea.Source); + GetEndpointManager()->SendUnicastRequest(m_ConfigRpcEndpoint, endpoint, request); return 0; } diff --git a/components/configrpc/configrpccomponent.h b/components/configrpc/configrpccomponent.h index 823c61d58..27ce4bb3b 100644 --- a/components/configrpc/configrpccomponent.h +++ b/components/configrpc/configrpccomponent.h @@ -9,7 +9,8 @@ class ConfigRpcComponent : public IcingaComponent private: VirtualEndpoint::Ptr m_ConfigRpcEndpoint; - int WelcomeMessageHandler(const NewRequestEventArgs& ea); + int NewEndpointHandler(const NewEndpointEventArgs& ea); + int SessionEstablishedHandler(const EventArgs& ea); int LocalObjectCreatedHandler(const EventArgs& ea); int LocalObjectRemovedHandler(const EventArgs& ea); diff --git a/components/discovery/discovery.vcxproj.filters b/components/discovery/discovery.vcxproj.filters new file mode 100644 index 000000000..36941f157 --- /dev/null +++ b/components/discovery/discovery.vcxproj.filters @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/components/discovery/discoverycomponent.cpp b/components/discovery/discoverycomponent.cpp index 001765922..49002474d 100644 --- a/components/discovery/discoverycomponent.cpp +++ b/components/discovery/discoverycomponent.cpp @@ -297,7 +297,7 @@ int DiscoveryComponent::WelcomeMessageHandler(const NewRequestEventArgs& nrea) if (endpoint->GetSentWelcome()) { EventArgs ea; - ea.Source = shared_from_this(); + ea.Source = endpoint; endpoint->OnSessionEstablished(ea); } @@ -340,7 +340,7 @@ void DiscoveryComponent::FinishDiscoverySetup(Endpoint::Ptr endpoint) if (endpoint->GetReceivedWelcome()) { EventArgs ea; - ea.Source = shared_from_this(); + ea.Source = endpoint; endpoint->OnSessionEstablished(ea); } }