internal Lookup(LocatorRegistry registryServant, Communicator communicator) { _registryServant = registryServant; _domainId = communicator.GetProperty("Ice.Discovery.DomainId") ?? ""; }
internal Lookup(LocatorRegistry registryServant, string pluginName, Communicator communicator) { _pluginName = pluginName; _registryServant = registryServant; _domainId = communicator.GetProperty($"{_pluginName}.DomainId") ?? ""; }
public void Initialize(PluginInitializationContext context) { const string defaultIPv4Endpoint = "udp -h 239.255.0.1 -p 4061"; const string defaultIPv6Endpoint = "udp -h \"ff15::1\" -p 4061"; if (_communicator.GetProperty($"{_pluginName}.Multicast.Endpoints") == null) { _communicator.SetProperty($"{_pluginName}.Multicast.Endpoints", $"{defaultIPv4Endpoint}:{defaultIPv6Endpoint}"); } string?lookupEndpoints = _communicator.GetProperty($"{_pluginName}.Lookup"); if (lookupEndpoints == null) { List <string> endpoints = new (); List <string> ipv4Interfaces = Network.GetInterfacesForMulticast("0.0.0.0", Network.EnableIPv4); List <string> ipv6Interfaces = Network.GetInterfacesForMulticast("::0", Network.EnableIPv6); endpoints.AddRange(ipv4Interfaces.Select(i => $"{defaultIPv4Endpoint} --interface \"{i}\"")); endpoints.AddRange(ipv6Interfaces.Select(i => $"{defaultIPv6Endpoint} --interface \"{i}\"")); lookupEndpoints = string.Join(":", endpoints); } if (_communicator.GetProperty($"{_pluginName}.Reply.Endpoints") == null) { _communicator.SetProperty($"{_pluginName}.Reply.Endpoints", "udp -h \"::0\" -p 0"); } _communicator.SetProperty($"{_pluginName}.Reply.ProxyOptions", "-d"); // create datagram proxies if (_communicator.GetProperty($"{_pluginName}.Locator.Endpoints") == null) { _communicator.SetProperty($"{_pluginName}.Locator.AdapterId", Guid.NewGuid().ToString()); } _multicastAdapter = _communicator.CreateObjectAdapter($"{_pluginName}.Multicast"); _replyAdapter = _communicator.CreateObjectAdapter($"{_pluginName}.Reply"); _locatorAdapter = _communicator.CreateObjectAdapter($"{_pluginName}.Locator"); // Setup locator registry. var locatorRegistryServant = new LocatorRegistry(_communicator); ILocatorRegistryPrx locatorRegistry = _locatorAdapter.AddWithUUID(locatorRegistryServant, ILocatorRegistryPrx.Factory); ILookupPrx lookup = ILookupPrx.Parse($"IceDiscovery/Lookup -d:{lookupEndpoints}", _communicator).Clone(clearRouter: true); // Add lookup Ice object var lookupServant = new Lookup(locatorRegistryServant, _pluginName, _communicator); _multicastAdapter.Add("IceDiscovery/Lookup", lookupServant); // Setup locator on the communicator. _locator = _locatorAdapter.AddWithUUID(new Locator(locatorRegistry, lookup, _replyAdapter, _pluginName), ILocatorPrx.Factory); _defaultLocator = _communicator.DefaultLocator; _communicator.DefaultLocator = _locator; _multicastAdapter.Activate(); _replyAdapter.Activate(); _locatorAdapter.Activate(); }