]> granicus.if.org Git - icinga2/commitdiff
Updated configrpc module to work with the new discovery component.
authorGunnar Beutner <gunnar.beutner@netways.de>
Tue, 8 May 2012 11:40:22 +0000 (13:40 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Tue, 8 May 2012 11:40:22 +0000 (13:40 +0200)
components/configrpc/configrpccomponent.cpp
components/configrpc/configrpccomponent.h
components/discovery/discovery.vcxproj.filters [new file with mode: 0644]
components/discovery/discoverycomponent.cpp

index 7cfdf069b72b34258c95b7121e72b5796aa70ba3..b7ea05633a652892bc56f5f95a77eed87735f103 100644 (file)
@@ -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<Endpoint>(ea.Source);
+       GetEndpointManager()->SendUnicastRequest(m_ConfigRpcEndpoint, endpoint, request);
 
        return 0;
 }
index 823c61d584657b156f6a7024140a5fb5f42dfc3e..27ce4bb3bba63dd5bf3dd0b252f76e8688a22e45 100644 (file)
@@ -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 (file)
index 0000000..36941f1
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <ClCompile Include="discoverycomponent.cpp" />
+    <ClCompile Include="discoverymessage.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="discoverycomponent.h" />
+    <ClInclude Include="i2-discovery.h" />
+    <ClInclude Include="discoverymessage.h" />
+  </ItemGroup>
+</Project>
\ No newline at end of file
index 0017659229d887a0f72dbf5cbf5e0936f56468fa..49002474d44d9063e62010231440627a65750215 100644 (file)
@@ -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);
        }
 }