public override void run(string[] args) { var properties = createTestProperties(ref args); // // This test kills connections, so we don't want warnings. // properties["Ice.Warn.Connections"] = "0"; properties["Ice.MessageSizeMax"] = "50000"; // This test relies on filling the TCP send/recv buffer, so // we rely on a fixed value for these buffers. properties["Ice.TCP.RcvSize"] = "50000"; // // Setup the test transport plug-in. // string?protocol; if (!properties.TryGetValue("Ice.Default.Protocol", out protocol)) { protocol = "tcp"; } properties["Ice.Default.Protocol"] = $"test-{protocol}"; using (var communicator = initialize(properties)) { PluginI plugin = new PluginI(communicator); plugin.initialize(); communicator.AddPlugin("Test", plugin); // // When running as a MIDlet the properties for the server may be // overridden by configuration. If it isn't then we assume // defaults. // if (communicator.GetProperty("TestAdapter.Endpoints") == null) { communicator.SetProperty("TestAdapter.Endpoints", getTestEndpoint(0)); } if (communicator.GetProperty("ControllerAdapter.Endpoints") == null) { communicator.SetProperty("ControllerAdapter.Endpoints", getTestEndpoint(1, "tcp")); communicator.SetProperty("ControllerAdapter.ThreadPool.Size", "1"); } Ice.ObjectAdapter adapter = communicator.createObjectAdapter("TestAdapter"); Ice.ObjectAdapter adapter2 = communicator.createObjectAdapter("ControllerAdapter"); BackgroundControllerI backgroundController = new BackgroundControllerI(adapter); BackgroundI backgroundI = new BackgroundI(backgroundController); adapter.Add(backgroundI, "background"); LocatorI locatorI = new LocatorI(backgroundController); adapter.Add(locatorI, "locator"); RouterI routerI = new RouterI(backgroundController); adapter.Add(routerI, "router"); adapter.Activate(); adapter2.Add(backgroundController, "backgroundController"); adapter2.Activate(); communicator.waitForShutdown(); } }
Initialize() { bool ipv4 = (_communicator.GetPropertyAsInt("Ice.IPv4") ?? 1) > 0; bool preferIPv6 = _communicator.GetPropertyAsInt("Ice.PreferIPv6Address") > 0; string address; if (ipv4 && !preferIPv6) { address = _communicator.GetProperty($"{_name}.Address") ?? "239.255.0.1"; } else { address = _communicator.GetProperty($"{_name}.Address") ?? "ff15::1"; } int port = _communicator.GetPropertyAsInt($"{_name}.Port") ?? 4061; string intf = _communicator.GetProperty($"{_name}.Interface") ?? ""; string lookupEndpoints = _communicator.GetProperty($"{_name}.Lookup") ?? ""; if (lookupEndpoints.Length == 0) { int ipVersion = ipv4 && !preferIPv6 ? IceInternal.Network.EnableIPv4 : IceInternal.Network.EnableIPv6; List <string> interfaces = IceInternal.Network.GetInterfacesForMulticast(intf, ipVersion); foreach (string p in interfaces) { if (p != interfaces[0]) { lookupEndpoints += ":"; } lookupEndpoints += "udp -h \"" + address + "\" -p " + port + " --interface \"" + p + "\""; } } if (_communicator.GetProperty($"{_name}.Reply.Endpoints") == null) { _communicator.SetProperty($"{_name}.Reply.Endpoints", intf.Length == 0 ? "udp -h *" : $"udp -h \"{intf}\""); } if (_communicator.GetProperty($"{_name}.Locator.Endpoints") == null) { _communicator.SetProperty($"{_name}.Locator.AdapterId", Guid.NewGuid().ToString()); } _replyAdapter = _communicator.CreateObjectAdapter(_name + ".Reply"); _locatorAdapter = _communicator.CreateObjectAdapter(_name + ".Locator"); // We don't want those adapters to be registered with the locator so clear their locator. _replyAdapter.Locator = null; _locatorAdapter.Locator = null; var lookupPrx = ILookupPrx.Parse($"IceLocatorDiscovery/Lookup -d:{lookupEndpoints}", _communicator); // No colloc optimization or router for the multicast proxy! lookupPrx = lookupPrx.Clone(clearRouter: false, collocationOptimized: false); ILocatorPrx voidLo = _locatorAdapter.AddWithUUID(new VoidLocatorI(), ILocatorPrx.Factory); string instanceName = _communicator.GetProperty($"{_name}.InstanceName") ?? ""; var id = new Identity("Locator", instanceName.Length > 0 ? instanceName : Guid.NewGuid().ToString()); _defaultLocator = _communicator.GetDefaultLocator(); _locator = new LocatorI(_name, lookupPrx, _communicator, instanceName, voidLo); _locatorPrx = _locatorAdapter.AddWithUUID(_locator, ILocatorPrx.Factory); _communicator.SetDefaultLocator(_locatorPrx); ILookupReply lookupReplyI = new LookupReplyI(_locator); _locator.SetLookupReply(_replyAdapter.AddWithUUID(lookupReplyI, ILookupReplyPrx.Factory) .Clone(invocationMode: InvocationMode.Datagram)); _replyAdapter.Activate(); _locatorAdapter.Activate(); }