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",
// 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;
}
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);
--- /dev/null
+<?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
if (endpoint->GetSentWelcome()) {
EventArgs ea;
- ea.Source = shared_from_this();
+ ea.Source = endpoint;
endpoint->OnSessionEstablished(ea);
}
if (endpoint->GetReceivedWelcome()) {
EventArgs ea;
- ea.Source = shared_from_this();
+ ea.Source = endpoint;
endpoint->OnSessionEstablished(ea);
}
}