示例#1
0
        public void TestGetInst()
        {
            // Get a not existing transport instance
            TransportInst inst = TransportRegistry.Instance.GetInst(nameof(TestGetInst));

            Assert.IsNull(inst);

            // Create a new transport instance an try to get it
            TransportInst created = TransportRegistry.Instance.CreateInst(nameof(TestGetInst), "shmem");

            Assert.IsNotNull(created);

            inst = TransportRegistry.Instance.GetInst(nameof(TestGetInst));
            Assert.IsNotNull(inst);
            Assert.AreEqual(created, inst);

            // Test name parameter guards
            inst = TransportRegistry.Instance.GetInst(null);
            Assert.IsNull(inst);

            inst = TransportRegistry.Instance.GetInst("");
            Assert.IsNull(inst);

            inst = TransportRegistry.Instance.GetInst("   ");
            Assert.IsNull(inst);
        }
示例#2
0
        public void TestDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            UdpInst       udpi = new UdpInst(inst);

            Assert.AreEqual("0.0.0.0:0", udpi.LocalAddress);
            Assert.AreEqual(32U, udpi.DatalinkControlChunks);
            Assert.AreEqual(10000, udpi.DatalinkReleaseDelay);
            Assert.IsFalse(udpi.IsReliable);
            Assert.AreEqual(2147481599u, udpi.MaxPacketSize);
            Assert.AreEqual(10U, udpi.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, udpi.Name);
            Assert.AreEqual(4096u, udpi.OptimumPacketSize);
            Assert.AreEqual(5U, udpi.QueueInitialPools);
            Assert.AreEqual(10U, udpi.QueueMessagesPerPool);
            if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                Assert.AreEqual(65536, udpi.RcvBufferSize);
                Assert.AreEqual(65536, udpi.SendBufferSize);
            }
            else
            {
                Assert.AreEqual(65535, udpi.RcvBufferSize);
                Assert.AreEqual(65535, udpi.SendBufferSize);
            }
            Assert.AreEqual(TRANSPORT_TYPE, udpi.TransportType);
            Assert.IsFalse(udpi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(udpi);
        }
示例#3
0
        public void TestDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            TcpInst       tcpi = new TcpInst(inst);

            Assert.AreEqual(2000, tcpi.PassiveReconnectDuration);
            Assert.AreEqual(-1, tcpi.MaxOutputPausePeriod);
            Assert.AreEqual(3, tcpi.ConnRetryAttempts);
            Assert.AreEqual(2.0, tcpi.ConnRetryBackoffMultiplier);
            Assert.AreEqual(500, tcpi.ConnRetryInitialDelay);
            Assert.IsFalse(tcpi.EnableNagleAlgorithm);
            Assert.IsTrue(tcpi.IsReliable);
            Assert.AreEqual(string.Empty, tcpi.PublicAddress);
            Assert.AreEqual(string.Empty, tcpi.LocalAddress);
            Assert.AreEqual(32U, tcpi.DatalinkControlChunks);
            Assert.AreEqual(10000, tcpi.DatalinkReleaseDelay);
            Assert.IsTrue(tcpi.IsReliable);
            Assert.AreEqual(2147481599u, tcpi.MaxPacketSize);
            Assert.AreEqual(10U, tcpi.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, tcpi.Name);
            Assert.AreEqual(4096u, tcpi.OptimumPacketSize);
            Assert.AreEqual(5U, tcpi.QueueInitialPools);
            Assert.AreEqual(10U, tcpi.QueueMessagesPerPool);
            Assert.AreEqual(TRANSPORT_TYPE, tcpi.TransportType);
            Assert.IsFalse(tcpi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(tcpi);
        }
示例#4
0
        public void TestNonDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            UdpInst       udpi = new UdpInst(inst)
            {
                LocalAddress          = "127.0.0.1:",
                DatalinkControlChunks = 64U,
                DatalinkReleaseDelay  = 20000,
                MaxPacketSize         = 2147481500u,
                MaxSamplesPerPacket   = 20U,
                OptimumPacketSize     = 2048u,
                QueueInitialPools     = 20U,
                QueueMessagesPerPool  = 20U,
                RcvBufferSize         = 65530,
                SendBufferSize        = 65530,
                ThreadPerConnection   = true,
            };

            Assert.AreEqual("127.0.0.1:0", udpi.LocalAddress);
            Assert.AreEqual(64U, udpi.DatalinkControlChunks);
            Assert.AreEqual(20000, udpi.DatalinkReleaseDelay);
            Assert.AreEqual(2147481500u, udpi.MaxPacketSize);
            Assert.AreEqual(20U, udpi.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, udpi.Name);
            Assert.AreEqual(2048u, udpi.OptimumPacketSize);
            Assert.AreEqual(20U, udpi.QueueInitialPools);
            Assert.AreEqual(20U, udpi.QueueMessagesPerPool);
            Assert.AreEqual(65530, udpi.RcvBufferSize);
            Assert.AreEqual(65530, udpi.SendBufferSize);
            Assert.AreEqual(TRANSPORT_TYPE, udpi.TransportType);
            Assert.IsTrue(udpi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(udpi);
        }
示例#5
0
        public void TestRemoveInst()
        {
            // Create a transport instance and remove it later
            TransportInst created = TransportRegistry.Instance.CreateInst(nameof(TestRemoveInst), "shmem");

            Assert.IsNotNull(created);

            TransportInst inst = TransportRegistry.Instance.GetInst(nameof(TestRemoveInst));

            Assert.IsNotNull(inst);
            Assert.AreEqual(created, inst);

            TransportRegistry.Instance.RemoveInst(created);

            created = TransportRegistry.Instance.GetInst(nameof(TestRemoveInst));
            Assert.IsNull(created);

            // Remove a null instance should not throw exception
            bool exception = false;

            try
            {
                TransportRegistry.Instance.RemoveInst(null);
            }
            catch
            {
                exception = true;
            }
            Assert.IsFalse(exception);
        }
        public void TestInsert()
        {
            // Test successfully insert
            TransportConfig config = TransportRegistry.Instance.CreateConfig(nameof(TestInsert));

            Assert.IsNotNull(config);
            TransportInst inst = TransportRegistry.Instance.CreateInst(nameof(TestInsert), "shmem");

            config.Insert(inst);
            Assert.IsNotNull(inst);

            Assert.IsNotNull(config.Transports);
            Assert.AreEqual(1, config.Transports.Count);
            Assert.AreEqual(inst.Name, config.Transports.First().Name);
            Assert.AreEqual(inst.TransportType, "shmem");

            // Test parameter guard
            bool exception = false;

            try
            {
                config.Insert(null);
            }
            catch (Exception ex)
            {
                exception = true;
                Assert.IsTrue(ex.GetType() == typeof(ArgumentNullException));
            }
            Assert.IsTrue(exception);

            TransportRegistry.Instance.RemoveConfig(config);
        }
示例#7
0
        public void TestNonDefaultValues()
        {
            TransportInst inst   = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            ShmemInst     shmemi = new ShmemInst(inst)
            {
                PoolSize              = 16000000U,
                DatalinkControlSize   = 2048U,
                DatalinkControlChunks = 64U,
                DatalinkReleaseDelay  = 20000,
                MaxPacketSize         = 2147481500u,
                MaxSamplesPerPacket   = 20U,
                OptimumPacketSize     = 2048u,
                QueueInitialPools     = 20U,
                QueueMessagesPerPool  = 20U,
                ThreadPerConnection   = true
            };

            Assert.AreEqual(16000000U, shmemi.PoolSize);
            Assert.AreEqual(2048U, shmemi.DatalinkControlSize);
            Assert.AreEqual(64U, shmemi.DatalinkControlChunks);
            Assert.AreEqual(20000, shmemi.DatalinkReleaseDelay);
            Assert.AreEqual(2147481500u, shmemi.MaxPacketSize);
            Assert.AreEqual(20U, shmemi.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, shmemi.Name);
            Assert.AreEqual(2048u, shmemi.OptimumPacketSize);
            Assert.AreEqual(20U, shmemi.QueueInitialPools);
            Assert.AreEqual(20U, shmemi.QueueMessagesPerPool);
            Assert.IsTrue(shmemi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(shmemi);
        }
示例#8
0
        public void TestDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            MulticastInst mi   = new MulticastInst(inst);

            Assert.IsFalse(mi.DefaultToIpv6);
            Assert.AreEqual("224.0.0.128:49152", mi.GroupAddress);
            Assert.AreEqual(string.Empty, mi.LocalAddress);
            Assert.AreEqual(32U, mi.NakDepth);
            Assert.AreEqual(4U, mi.NakDelayIntervals);
            Assert.IsNotNull(mi.NakInterval);
            Assert.AreEqual(0, mi.NakInterval.Seconds);
            Assert.AreEqual(500000, mi.NakInterval.MicroSeconds);
            Assert.AreEqual(3U, mi.NakMax);
            Assert.IsNotNull(mi.NakTimeout);
            Assert.AreEqual(30, mi.NakTimeout.Seconds);
            Assert.AreEqual(0, mi.NakTimeout.MicroSeconds);
            Assert.AreEqual(49152, mi.PortOffset);
            Assert.IsTrue(mi.Reliable);
            Assert.AreEqual(2.0, mi.SynBackoff);
            Assert.IsNotNull(mi.SynInterval);
            Assert.AreEqual(0, mi.SynInterval.Seconds);
            Assert.AreEqual(250000, mi.SynInterval.MicroSeconds);
            Assert.IsNotNull(mi.SynTimeout);
            Assert.AreEqual(30, mi.SynTimeout.Seconds);
            Assert.AreEqual(0, mi.SynTimeout.MicroSeconds);
            Assert.IsFalse(mi.AsyncSend);
            Assert.AreEqual(1, mi.Ttl);
            Assert.AreEqual(32U, mi.DatalinkControlChunks);
            Assert.AreEqual(10000, mi.DatalinkReleaseDelay);
            Assert.IsTrue(mi.IsReliable);
            Assert.AreEqual(2147481599u, mi.MaxPacketSize);
            Assert.AreEqual(10U, mi.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, mi.Name);
            Assert.AreEqual(4096u, mi.OptimumPacketSize);
            Assert.AreEqual(5U, mi.QueueInitialPools);
            Assert.AreEqual(10U, mi.QueueMessagesPerPool);

            if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                Assert.AreEqual(65536U, mi.RcvBufferSize);
            }
            else
            {
                Assert.AreEqual(65535U, mi.RcvBufferSize);
            }

            Assert.AreEqual(TRANSPORT_TYPE, mi.TransportType);
            Assert.IsFalse(mi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(mi);
        }
示例#9
0
        public static void BindTcpTransportConfig(this Entity entity)
        {
            string guid       = Guid.NewGuid().ToString("N");
            string configName = "openddsharp_tcp_" + guid;
            string instName   = "internal_openddsharp_tcp_transport_" + guid;

            TransportConfig config = TransportRegistry.Instance.CreateConfig(configName);
            TransportInst   inst   = TransportRegistry.Instance.CreateInst(instName, "tcp");
            TcpInst         tcpi   = new TcpInst(inst);

            config.Insert(inst);

            TransportRegistry.Instance.BindConfig(config, entity);
        }
示例#10
0
        public static void BindRtpsUdpTransportConfig(this Entity entity)
        {
            string guid       = Guid.NewGuid().ToString("N");
            string configName = "openddsharp_rtps_interop_" + guid;
            string instName   = "internal_openddsharp_rtps_transport_" + guid;

            TransportConfig config = TransportRegistry.Instance.CreateConfig(configName);
            TransportInst   inst   = TransportRegistry.Instance.CreateInst(instName, "rtps_udp");
            RtpsUdpInst     rui    = new RtpsUdpInst(inst);

            config.Insert(inst);

            TransportRegistry.Instance.BindConfig(configName, entity);
        }
示例#11
0
        private static void BindRtpsUdpTransportConfig(DomainParticipant participant)
        {
            string guid       = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
            string configName = "openddsharp_rtps_interop_" + guid;
            string instName   = "internal_openddsharp_rtps_transport_" + guid;

            TransportConfig config = TransportRegistry.Instance.CreateConfig(configName);
            TransportInst   inst   = TransportRegistry.Instance.CreateInst(instName, "rtps_udp");
            RtpsUdpInst     rui    = new RtpsUdpInst(inst);

            config.Insert(rui);

            TransportRegistry.Instance.BindConfig(configName, participant);
        }
示例#12
0
        private static void BindRtpsUdpTransportConfig(DomainParticipant participant)
        {
            long   ticks      = DateTime.Now.Ticks;
            string configName = "openddsharp_rtps_interop_" + ticks.ToString();
            string instName   = "internal_openddsharp_rtps_transport_" + ticks.ToString();

            TransportConfig config = TransportRegistry.Instance.CreateConfig(configName);
            TransportInst   inst   = TransportRegistry.Instance.CreateInst(instName, "rtps_udp");
            RtpsUdpInst     rui    = new RtpsUdpInst(inst);

            config.Insert(inst);

            TransportRegistry.Instance.BindConfig(configName, participant);
        }
示例#13
0
        public static void BindTcpTransportConfig(this Entity entity)
        {
            long   ticks      = DateTime.Now.Ticks;
            string configName = "openddsharp_tcp_" + ticks.ToString();
            string instName   = "internal_openddsharp_tcp_transport_" + ticks.ToString();

            TransportConfig config = TransportRegistry.Instance.CreateConfig(configName);
            TransportInst   inst   = TransportRegistry.Instance.CreateInst(instName, "tcp");
            TcpInst         tcpi   = new TcpInst(inst);

            config.Insert(inst);

            TransportRegistry.Instance.BindConfig(config, entity);
        }
示例#14
0
        public void TestSortedInsert()
        {
            // Test successfully insert
            TransportConfig config = TransportRegistry.Instance.CreateConfig(nameof(TestSortedInsert));

            Assert.IsNotNull(config);

            // Create transport instance B
            TransportInst instB = TransportRegistry.Instance.CreateInst(nameof(TestSortedInsert) + "B", "shmem");

            config.SortedInsert(instB);
            Assert.IsNotNull(instB);

            Assert.IsNotNull(config.Transports);
            Assert.AreEqual(1, config.Transports.Count);
            Assert.AreEqual(instB.Name, config.Transports.First().Name);
            Assert.AreEqual(instB.TransportType, "shmem");

            // Create transport instance A
            TransportInst instA = TransportRegistry.Instance.CreateInst(nameof(TestSortedInsert) + "A", "udp");

            config.SortedInsert(instA);
            Assert.IsNotNull(instA);

            // Check the transport list
            Assert.IsNotNull(config.Transports);
            Assert.AreEqual(2, config.Transports.Count);
            Assert.AreEqual(instA.Name, config.Transports.ElementAt(0).Name);
            Assert.AreEqual(instA.TransportType, "udp");
            Assert.AreEqual(instB.Name, config.Transports.ElementAt(1).Name);
            Assert.AreEqual(instB.TransportType, "shmem");

            // Test parameter guard
            bool exception = false;

            try
            {
                config.SortedInsert(null);
            }
            catch (Exception ex)
            {
                exception = true;
                Assert.IsTrue(ex.GetType() == typeof(ArgumentNullException));
            }
            Assert.IsTrue(exception);

            TransportRegistry.Instance.RemoveConfig(config);
        }
示例#15
0
        public void TestDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            RtpsUdpInst   rui  = new RtpsUdpInst(inst);

            Assert.IsTrue(rui.UseMulticast);
            Assert.AreEqual("239.255.0.2:7401", rui.MulticastGroupAddress);
            Assert.AreEqual(string.Empty, rui.MulticastInterface);
            Assert.AreEqual("0.0.0.0:0", rui.LocalAddress);
            Assert.AreEqual(0U, rui.NakDepth);
            Assert.IsNotNull(rui.NakResponseDelay);
            Assert.AreEqual(0, rui.NakResponseDelay.Seconds);
            Assert.AreEqual(200000, rui.NakResponseDelay.MicroSeconds);
            Assert.IsNotNull(rui.HeartbeatPeriod);
            Assert.AreEqual(1, rui.HeartbeatPeriod.Seconds);
            Assert.AreEqual(0, rui.HeartbeatPeriod.MicroSeconds);
            Assert.AreEqual(1, rui.Ttl);
            Assert.AreEqual(32U, rui.DatalinkControlChunks);
            Assert.AreEqual(10000, rui.DatalinkReleaseDelay);
            Assert.IsTrue(rui.IsReliable);
            Assert.AreEqual(2147481599u, rui.MaxPacketSize);
            Assert.AreEqual(10U, rui.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, rui.Name);
            Assert.AreEqual(4096u, rui.OptimumPacketSize);
            Assert.AreEqual(5U, rui.QueueInitialPools);
            Assert.AreEqual(10U, rui.QueueMessagesPerPool);
            if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                Assert.AreEqual(65536, rui.RcvBufferSize);
                Assert.AreEqual(65536, rui.SendBufferSize);
            }
            else
            {
                Assert.AreEqual(65535, rui.RcvBufferSize);
                Assert.AreEqual(65535, rui.SendBufferSize);
            }
            Assert.AreEqual(TRANSPORT_TYPE, rui.TransportType);
            Assert.IsTrue(rui.RequiresCdr);
            Assert.IsFalse(rui.ThreadPerConnection);
            Assert.AreEqual(5, rui.ReceiveAddressDuration.Seconds);
            Assert.AreEqual(0, rui.ReceiveAddressDuration.MicroSeconds);

            TransportRegistry.Instance.RemoveInst(rui);
        }
示例#16
0
        public void TestNonDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            TcpInst       tcpi = new TcpInst(inst)
            {
                PassiveReconnectDuration   = 1000,
                MaxOutputPausePeriod       = 5000,
                ConnRetryAttempts          = 5,
                ConnRetryBackoffMultiplier = 1.5,
                ConnRetryInitialDelay      = 1000,
                EnableNagleAlgorithm       = true,
                PublicAddress         = "127.0.0.1:",
                LocalAddress          = "127.0.0.1:",
                DatalinkControlChunks = 64U,
                DatalinkReleaseDelay  = 20000,
                MaxPacketSize         = 2147481500u,
                MaxSamplesPerPacket   = 20U,
                OptimumPacketSize     = 2048u,
                QueueInitialPools     = 10U,
                QueueMessagesPerPool  = 20U,
                ThreadPerConnection   = true
            };

            Assert.AreEqual(1000, tcpi.PassiveReconnectDuration);
            Assert.AreEqual(5000, tcpi.MaxOutputPausePeriod);
            Assert.AreEqual(5, tcpi.ConnRetryAttempts);
            Assert.AreEqual(1.5, tcpi.ConnRetryBackoffMultiplier);
            Assert.AreEqual(1000, tcpi.ConnRetryInitialDelay);
            Assert.IsTrue(tcpi.EnableNagleAlgorithm);
            Assert.IsTrue(tcpi.IsReliable);
            Assert.AreEqual("127.0.0.1:", tcpi.PublicAddress);
            Assert.AreEqual("127.0.0.1:", tcpi.LocalAddress);
            Assert.AreEqual(64U, tcpi.DatalinkControlChunks);
            Assert.AreEqual(20000, tcpi.DatalinkReleaseDelay);
            Assert.AreEqual(2147481500u, tcpi.MaxPacketSize);
            Assert.AreEqual(20U, tcpi.MaxSamplesPerPacket);
            Assert.AreEqual(2048u, tcpi.OptimumPacketSize);
            Assert.AreEqual(10U, tcpi.QueueInitialPools);
            Assert.AreEqual(20U, tcpi.QueueMessagesPerPool);
            Assert.IsTrue(tcpi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(tcpi);
        }
示例#17
0
        public void TestNonDefaultValue()
        {
            TransportConfig config = TransportRegistry.Instance.CreateConfig(nameof(TestNonDefaultValue));

            Assert.IsNotNull(config);
            config.SwapBytes = true;
            config.PassiveConnectDuration = 30000u;
            TransportInst inst = TransportRegistry.Instance.CreateInst(nameof(TestNonDefaultValue), "shmem");

            Assert.IsNotNull(inst);
            config.Insert(inst);

            Assert.IsNotNull(config);
            Assert.AreEqual(nameof(TestNonDefaultValue), config.Name);
            Assert.AreEqual(30000u, config.PassiveConnectDuration);
            Assert.IsTrue(config.SwapBytes);
            Assert.IsNotNull(config.Transports);
            Assert.AreEqual(1, config.Transports.Count);
            Assert.AreEqual(inst.Name, config.Transports.First().Name);

            TransportRegistry.Instance.RemoveConfig(config);
        }
示例#18
0
        public void TestDefaultValues()
        {
            TransportInst inst   = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            ShmemInst     shmemi = new ShmemInst(inst);

            Assert.IsFalse(string.IsNullOrWhiteSpace(shmemi.HostName));
            Assert.AreEqual(16777216U, shmemi.PoolSize);
            Assert.IsFalse(string.IsNullOrWhiteSpace(shmemi.PoolName));
            Assert.AreEqual(4096U, shmemi.DatalinkControlSize);
            Assert.AreEqual(32U, shmemi.DatalinkControlChunks);
            Assert.AreEqual(10000, shmemi.DatalinkReleaseDelay);
            Assert.IsTrue(shmemi.IsReliable);
            Assert.AreEqual(2147481599u, shmemi.MaxPacketSize);
            Assert.AreEqual(10U, shmemi.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, shmemi.Name);
            Assert.AreEqual(4096u, shmemi.OptimumPacketSize);
            Assert.AreEqual(5U, shmemi.QueueInitialPools);
            Assert.AreEqual(10U, shmemi.QueueMessagesPerPool);
            Assert.AreEqual(TRANSPORT_TYPE, shmemi.TransportType);
            Assert.IsFalse(shmemi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(shmemi);
        }
示例#19
0
 public void Add(IntPtr ptr, TransportInst inst)
 {
     _insts.AddOrUpdate(ptr, inst, (p, t) => inst);
 }
示例#20
0
        public void TestCreateInst()
        {
            // Create a RTPS UDP transport instance
            TransportInst inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "rtps_udp");

            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("rtps_udp", inst.TransportType);
            RtpsUdpInst rui = new RtpsUdpInst(inst);

            Assert.IsNotNull(rui);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a UDP transport instance
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "udp");
            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("udp", inst.TransportType);
            UdpInst udpi = new UdpInst(inst);

            Assert.IsNotNull(udpi);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a Multicast transport instance
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "multicast");
            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("multicast", inst.TransportType);
            MulticastInst multicasti = new MulticastInst(inst);

            Assert.IsNotNull(multicasti);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a Multicast transport instance
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "tcp");
            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("tcp", inst.TransportType);
            MulticastInst tcpi = new MulticastInst(inst);

            Assert.IsNotNull(tcpi);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a SharedMemory transport instance
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "shmem");
            Assert.IsNotNull(inst);
            Assert.AreEqual(nameof(TestCreateInst), inst.Name);
            Assert.AreEqual("shmem", inst.TransportType);
            ShmemInst shmemi = new ShmemInst(inst);

            Assert.IsNotNull(shmemi);
            TransportRegistry.Instance.RemoveInst(inst);

            // Create a instance with an invalid transport type
            inst = TransportRegistry.Instance.CreateInst(nameof(TestCreateInst), "quantic_teletransport");
            Assert.IsNull(inst);

            // Try to create a transport instance with empty name
            bool exception = false;

            try
            {
                inst = TransportRegistry.Instance.CreateInst(null, "shmem");
            }
            catch (Exception ex)
            {
                exception = true;
                Assert.IsTrue(ex.GetType() == typeof(ArgumentNullException));
            }
            Assert.IsTrue(exception);

            exception = false;
            try
            {
                inst = TransportRegistry.Instance.CreateInst(string.Empty, "shmem");
            }
            catch (Exception ex)
            {
                exception = true;
                Assert.IsTrue(ex.GetType() == typeof(ArgumentNullException));
            }
            Assert.IsTrue(exception);

            exception = false;
            try
            {
                inst = TransportRegistry.Instance.CreateInst("  ", "shmem");
            }
            catch (Exception ex)
            {
                exception = true;
                Assert.IsTrue(ex.GetType() == typeof(ArgumentNullException));
            }
            Assert.IsTrue(exception);
        }
示例#21
0
        public OpenDDSharpService()
        {
            _config = ServiceLocator.Current.GetInstance <IConfigurationService>();

            _disc = new RtpsDiscovery(RTPS_DISCOVERY)
            {
                ResendPeriod = new TimeValue {
                    Seconds = 1
                },
                SedpMulticast = true
            };

            ParticipantService.Instance.AddDiscovery(_disc);
            ParticipantService.Instance.DefaultDiscovery = RTPS_DISCOVERY;

            long   ticks      = DateTime.Now.Ticks;
            string configName = "openddsharp_rtps_interop_" + ticks.ToString();;
            string instName   = "internal_openddsharp_rtps_transport_" + ticks.ToString();;

            _tConfig = TransportRegistry.Instance.CreateConfig(configName);
            _inst    = TransportRegistry.Instance.CreateInst(instName, "rtps_udp");
            _rui     = new RtpsUdpInst(_inst);
            _tConfig.Insert(_inst);
            TransportRegistry.Instance.GlobalConfig = _tConfig;
            ParticipantService.Instance.SetRepoDomain(0, RTPS_DISCOVERY);

            _domainFactory = ParticipantService.Instance.GetDomainParticipantFactory("-DCPSDebugLevel", "10", "-ORBLogFile", "LogFile.log", "-ORBDebugLevel", "10");

            _participant = _domainFactory.CreateParticipant(0);
            if (_participant == null)
            {
                throw new Exception("Could not create the participant");
            }

            ShapeTypeTypeSupport support = new ShapeTypeTypeSupport();
            ReturnCode           result  = support.RegisterType(_participant, TYPE_NAME);

            if (result != ReturnCode.Ok)
            {
                throw new Exception("Could not register type: " + result.ToString());
            }

            _squareTopic = _participant.CreateTopic(SQUARE_TOPIC_NAME, TYPE_NAME);
            if (_squareTopic == null)
            {
                throw new Exception("Could not create square topic");
            }

            _circleTopic = _participant.CreateTopic(CIRCLE_TOPIC_NAME, TYPE_NAME);
            if (_circleTopic == null)
            {
                throw new Exception("Could not create circle topic");
            }

            _triangleTopic = _participant.CreateTopic(TRIANGLE_TOPIC_NAME, TYPE_NAME);
            if (_triangleTopic == null)
            {
                throw new Exception("Could not create triangle topic");
            }

            _publisher = _participant.CreatePublisher();
            if (_publisher == null)
            {
                throw new Exception("Could not create publisher");
            }

            _subscriber = _participant.CreateSubscriber();
            if (_subscriber == null)
            {
                throw new Exception("Could not create subscriber");
            }

            _shapeWaitSets = new List <ShapeWaitSet>();
            _shapeDynamics = new List <ShapeDynamic>();

            _cfCircleCount   = 0;
            _cfSquareCount   = 0;
            _cfTriangleCount = 0;
        }
示例#22
0
        public void TestNonDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            MulticastInst mi   = new MulticastInst(inst)
            {
                DefaultToIpv6     = true,
                GroupAddress      = "224.0.0.64:49150",
                LocalAddress      = "127.0.0.1:",
                NakDepth          = 64U,
                NakDelayIntervals = 8U,
                NakInterval       = new TimeValue
                {
                    Seconds      = 1,
                    MicroSeconds = 0,
                },
                NakMax     = 6U,
                NakTimeout = new TimeValue
                {
                    Seconds      = 10,
                    MicroSeconds = 500000,
                },
                PortOffset  = 49150,
                Reliable    = false,
                SynBackoff  = 1.5,
                SynInterval = new TimeValue
                {
                    Seconds      = 10,
                    MicroSeconds = 500000,
                },
                SynTimeout = new TimeValue
                {
                    Seconds      = 10,
                    MicroSeconds = 500000,
                },
                AsyncSend             = true,
                Ttl                   = 2,
                DatalinkControlChunks = 64U,
                DatalinkReleaseDelay  = 20000,
                MaxPacketSize         = 2147481500u,
                MaxSamplesPerPacket   = 20U,
                OptimumPacketSize     = 2048u,
                QueueInitialPools     = 10U,
                QueueMessagesPerPool  = 20U,
                RcvBufferSize         = 65530U,
                ThreadPerConnection   = true,
            };

            Assert.IsTrue(mi.DefaultToIpv6);
            Assert.AreEqual("224.0.0.64:49150", mi.GroupAddress);
            Assert.AreEqual("127.0.0.1:", mi.LocalAddress);
            Assert.AreEqual(64U, mi.NakDepth);
            Assert.AreEqual(8U, mi.NakDelayIntervals);
            Assert.IsNotNull(mi.NakInterval);
            Assert.AreEqual(1, mi.NakInterval.Seconds);
            Assert.AreEqual(0, mi.NakInterval.MicroSeconds);
            Assert.AreEqual(6U, mi.NakMax);
            Assert.IsNotNull(mi.NakTimeout);
            Assert.AreEqual(10, mi.NakTimeout.Seconds);
            Assert.AreEqual(500000, mi.NakTimeout.MicroSeconds);
            Assert.AreEqual(49150, mi.PortOffset);
            Assert.IsFalse(mi.Reliable);
            Assert.AreEqual(1.5, mi.SynBackoff);
            Assert.IsNotNull(mi.SynInterval);
            Assert.AreEqual(10, mi.SynInterval.Seconds);
            Assert.AreEqual(500000, mi.SynInterval.MicroSeconds);
            Assert.IsNotNull(mi.SynTimeout);
            Assert.AreEqual(10, mi.SynTimeout.Seconds);
            Assert.AreEqual(500000, mi.SynTimeout.MicroSeconds);
            Assert.IsTrue(mi.AsyncSend);
            Assert.AreEqual(2, mi.Ttl);
            Assert.AreEqual(64U, mi.DatalinkControlChunks);
            Assert.AreEqual(20000, mi.DatalinkReleaseDelay);
            Assert.IsFalse(mi.IsReliable);
            Assert.AreEqual(2147481500u, mi.MaxPacketSize);
            Assert.AreEqual(20U, mi.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, mi.Name);
            Assert.AreEqual(2048u, mi.OptimumPacketSize);
            Assert.AreEqual(10U, mi.QueueInitialPools);
            Assert.AreEqual(20U, mi.QueueMessagesPerPool);
            Assert.AreEqual(65530U, mi.RcvBufferSize);
            Assert.AreEqual(TRANSPORT_TYPE, mi.TransportType);
            Assert.IsTrue(mi.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(mi);
        }
示例#23
0
        public void TestNonDefaultValues()
        {
            TransportInst inst = TransportRegistry.Instance.CreateInst(INSTANCE_NAME, TRANSPORT_TYPE);
            RtpsUdpInst   rui  = new RtpsUdpInst(inst)
            {
                UseMulticast          = false,
                MulticastGroupAddress = "239.255.0.1:7402",
                LocalAddress          = "127.0.0.1:",
                MulticastInterface    = "eth0",
                NakDepth         = 64U,
                NakResponseDelay = new TimeValue
                {
                    Seconds      = 1,
                    MicroSeconds = 400000
                },
                HeartbeatPeriod = new TimeValue
                {
                    Seconds      = 2,
                    MicroSeconds = 100000
                },
                HeartbeatResponseDelay = new TimeValue
                {
                    Seconds      = 2,
                    MicroSeconds = 100000
                },
                HandshakeTimeout = new TimeValue
                {
                    Seconds      = 60,
                    MicroSeconds = 100000
                },
                Ttl = 2,
                DatalinkControlChunks = 64U,
                DatalinkReleaseDelay  = 20000,
                DurableDataTimeout    = new TimeValue
                {
                    Seconds      = 20,
                    MicroSeconds = 100000
                },
                MaxPacketSize        = 2147481500u,
                MaxSamplesPerPacket  = 20U,
                OptimumPacketSize    = 2048u,
                QueueInitialPools    = 20U,
                QueueMessagesPerPool = 20U,
                RcvBufferSize        = 65530,
                SendBufferSize       = 65530,
                ThreadPerConnection  = true
            };

            Assert.IsFalse(rui.UseMulticast);
            Assert.AreEqual("239.255.0.1:7402", rui.MulticastGroupAddress);
            Assert.AreEqual("eth0", rui.MulticastInterface);
            Assert.AreEqual("127.0.0.1:", rui.LocalAddress);
            Assert.AreEqual(64U, rui.NakDepth);
            Assert.IsNotNull(rui.NakResponseDelay);
            Assert.AreEqual(1, rui.NakResponseDelay.Seconds);
            Assert.AreEqual(400000, rui.NakResponseDelay.MicroSeconds);
            Assert.IsNotNull(rui.HeartbeatPeriod);
            Assert.AreEqual(2, rui.HeartbeatPeriod.Seconds);
            Assert.AreEqual(100000, rui.HeartbeatPeriod.MicroSeconds);
            Assert.IsNotNull(rui.HeartbeatResponseDelay);
            Assert.AreEqual(2, rui.HeartbeatResponseDelay.Seconds);
            Assert.AreEqual(100000, rui.HeartbeatResponseDelay.MicroSeconds);
            Assert.IsNotNull(rui.HandshakeTimeout);
            Assert.AreEqual(60, rui.HandshakeTimeout.Seconds);
            Assert.AreEqual(100000, rui.HandshakeTimeout.MicroSeconds);
            Assert.AreEqual(2, rui.Ttl);
            Assert.AreEqual(64U, rui.DatalinkControlChunks);
            Assert.AreEqual(20000, rui.DatalinkReleaseDelay);
            Assert.IsNotNull(rui.DurableDataTimeout);
            Assert.AreEqual(20, rui.DurableDataTimeout.Seconds);
            Assert.AreEqual(100000, rui.DurableDataTimeout.MicroSeconds);
            Assert.IsTrue(rui.IsReliable);
            Assert.AreEqual(2147481500u, rui.MaxPacketSize);
            Assert.AreEqual(20U, rui.MaxSamplesPerPacket);
            Assert.AreEqual(INSTANCE_NAME, rui.Name);
            Assert.AreEqual(2048u, rui.OptimumPacketSize);
            Assert.AreEqual(20U, rui.QueueInitialPools);
            Assert.AreEqual(20U, rui.QueueMessagesPerPool);
            Assert.AreEqual(65530, rui.RcvBufferSize);
            Assert.AreEqual(65530, rui.SendBufferSize);
            Assert.AreEqual(TRANSPORT_TYPE, rui.TransportType);
            Assert.IsTrue(rui.RequiresCdr);
            Assert.IsTrue(rui.ThreadPerConnection);

            TransportRegistry.Instance.RemoveInst(rui);
        }