Example #1
0
        public void TestLookupInstance()
        {
            ReturnCode        ret;
            DomainParticipant otherParticipant = null;
            Topic             topic            = null;

            try
            {
                TopicBuiltinTopicData data = default;
                SampleInfo            info = new SampleInfo();

                otherParticipant = AssemblyInitializer.Factory.CreateParticipant(AssemblyInitializer.INFOREPO_DOMAIN);
                Assert.IsNotNull(otherParticipant);
                otherParticipant.BindRtpsUdpTransportConfig();

                TestStructTypeSupport support = new TestStructTypeSupport();
                string     typeName           = support.GetTypeName();
                ReturnCode result             = support.RegisterType(otherParticipant, typeName);
                Assert.AreEqual(ReturnCode.Ok, result);

                TopicQos qos = TestHelper.CreateNonDefaultTopicQos();
                topic = otherParticipant.CreateTopic(TestContext.TestName, typeName, qos);
                Assert.IsNotNull(topic);

                int count = 200;
                ret = ReturnCode.NoData;
                while (ret != ReturnCode.Ok && count > 0)
                {
                    Thread.Sleep(100);
                    ret = _dr.ReadNextSample(ref data, info);
                    count--;
                }

                Assert.AreEqual(ReturnCode.Ok, ret);
                Assert.AreEqual(typeName, data.TypeName);
                Assert.IsNotNull(data.Key);
                TestHelper.TestNonDefaultTopicData(data);

                // Lookup for an existing instance
                var handle = _dr.LookupInstance(data);
                Assert.AreNotEqual(InstanceHandle.HandleNil, handle);
            }
            finally
            {
                ret = otherParticipant.DeleteTopic(topic);
                Assert.AreEqual(ReturnCode.Ok, ret);
                ret = otherParticipant.DeleteContainedEntities();
                Assert.AreEqual(ReturnCode.Ok, ret);

                ret = AssemblyInitializer.Factory.DeleteParticipant(otherParticipant);
                Assert.AreEqual(ReturnCode.Ok, ret);
            }
        }
        public void TestGetKeyValue()
        {
            // Call GetKeyValue with HandleNil
            TopicBuiltinTopicData data = default;
            SampleInfo            info = new SampleInfo();
            ReturnCode            ret  = _dr.GetKeyValue(ref data, InstanceHandle.HandleNil);

            Assert.AreEqual(ReturnCode.BadParameter, ret);

            DomainParticipant otherParticipant = AssemblyInitializer.Factory.CreateParticipant(AssemblyInitializer.INFOREPO_DOMAIN);

            Assert.IsNotNull(otherParticipant);
            otherParticipant.BindTcpTransportConfig();

            TestStructTypeSupport support = new TestStructTypeSupport();
            string     typeName           = support.GetTypeName();
            ReturnCode result             = support.RegisterType(otherParticipant, typeName);

            Assert.AreEqual(ReturnCode.Ok, result);

            TopicQos qos   = TestHelper.CreateNonDefaultTopicQos();
            var      topic = otherParticipant.CreateTopic(TestContext.TestName, typeName, qos);

            Assert.IsNotNull(topic);

            Thread.Sleep(500);

            // Get the for an existing instance
            ret = _dr.ReadNextSample(ref data, info);
            Assert.AreEqual(ReturnCode.Ok, ret);
            Assert.AreEqual(typeName, data.TypeName);
            Assert.IsNotNull(data.Key);
            TestHelper.TestNonDefaultTopicData(data);

            TopicBuiltinTopicData aux = default;

            ret = _dr.GetKeyValue(ref aux, info.InstanceHandle);
            Assert.AreEqual(ReturnCode.Ok, ret);
            for (int i = 0; i < 3; i++)
            {
                Assert.AreEqual(data.Key.Value[i], aux.Key.Value[i]);
            }

            ret = otherParticipant.DeleteContainedEntities();
            Assert.AreEqual(ReturnCode.Ok, ret);

            ret = AssemblyInitializer.Factory.DeleteParticipant(otherParticipant);
            Assert.AreEqual(ReturnCode.Ok, ret);
        }
Example #3
0
 public static void TestNonDefaultTopicData(TopicBuiltinTopicData data)
 {
     Assert.IsNotNull(data);
     Assert.IsNotNull(data.Deadline);
     Assert.IsNotNull(data.DestinationOrder);
     Assert.IsNotNull(data.Durability);
     Assert.IsNotNull(data.DurabilityService);
     Assert.IsNotNull(data.History);
     Assert.IsNotNull(data.LatencyBudget);
     Assert.IsNotNull(data.Lifespan);
     Assert.IsNotNull(data.Liveliness);
     Assert.IsNotNull(data.Ownership);
     Assert.IsNotNull(data.Reliability);
     Assert.IsNotNull(data.ResourceLimits);
     Assert.IsNotNull(data.TopicData);
     Assert.IsNotNull(data.TransportPriority);
     Assert.AreEqual(5, data.Deadline.Period.Seconds);
     Assert.AreEqual(Duration.ZeroNanoseconds, data.Deadline.Period.NanoSeconds);
     Assert.AreEqual(DestinationOrderQosPolicyKind.BySourceTimestampDestinationOrderQos, data.DestinationOrder.Kind);
     Assert.AreEqual(DurabilityQosPolicyKind.TransientLocalDurabilityQos, data.Durability.Kind);
     Assert.AreEqual(HistoryQosPolicyKind.KeepAllHistoryQos, data.DurabilityService.HistoryKind);
     Assert.AreEqual(5, data.DurabilityService.HistoryDepth);
     Assert.AreEqual(5, data.DurabilityService.MaxInstances);
     Assert.AreEqual(5, data.DurabilityService.MaxSamples);
     Assert.AreEqual(5, data.DurabilityService.MaxSamplesPerInstance);
     Assert.IsNotNull(data.DurabilityService.ServiceCleanupDelay);
     Assert.AreEqual(5, data.DurabilityService.ServiceCleanupDelay.Seconds);
     Assert.AreEqual((uint)5, data.DurabilityService.ServiceCleanupDelay.NanoSeconds);
     Assert.AreEqual(HistoryQosPolicyKind.KeepAllHistoryQos, data.History.Kind);
     Assert.AreEqual(5, data.History.Depth);
     Assert.AreEqual(5, data.LatencyBudget.Duration.Seconds);
     Assert.AreEqual((uint)5, data.LatencyBudget.Duration.NanoSeconds);
     Assert.AreEqual(5, data.Lifespan.Duration.Seconds);
     Assert.AreEqual((uint)5, data.Lifespan.Duration.NanoSeconds);
     Assert.AreEqual(LivelinessQosPolicyKind.ManualByParticipantLivelinessQos, data.Liveliness.Kind);
     Assert.AreEqual(5, data.Liveliness.LeaseDuration.Seconds);
     Assert.AreEqual((uint)5, data.Liveliness.LeaseDuration.NanoSeconds);
     Assert.AreEqual(OwnershipQosPolicyKind.ExclusiveOwnershipQos, data.Ownership.Kind);
     Assert.AreEqual(ReliabilityQosPolicyKind.ReliableReliabilityQos, data.Reliability.Kind);
     Assert.AreEqual(5, data.Reliability.MaxBlockingTime.Seconds);
     Assert.AreEqual((uint)5, data.Reliability.MaxBlockingTime.NanoSeconds);
     Assert.AreEqual(5, data.ResourceLimits.MaxInstances);
     Assert.AreEqual(5, data.ResourceLimits.MaxSamples);
     Assert.AreEqual(5, data.ResourceLimits.MaxSamplesPerInstance);
     Assert.AreEqual(1, data.TopicData.Value.Count());
     Assert.AreEqual(0x5, data.TopicData.Value.First());
     Assert.AreEqual(5, data.TransportPriority.Value);
 }
Example #4
0
        public ReturnCode GetDiscoveredTopicData(ref TopicBuiltinTopicData data, InstanceHandle handle)
        {
            ReturnCode result;
            GCHandle   dataHandle = GCHandle.Alloc(data, GCHandleType.Normal);

            result = (ReturnCode)Gapi.DomainParticipant.get_discovered_topic_data(
                GapiPeer,
                GCHandle.ToIntPtr(dataHandle),
                handle,
                TopicDataMarshaler.CopyOutDelegate);

            data = dataHandle.Target as TopicBuiltinTopicData;
            dataHandle.Free();

            return(result);
        }
        public void TestTakeNextSample()
        {
            TopicBuiltinTopicData data  = default;
            SampleInfo            infos = new SampleInfo();
            ReturnCode            ret   = _dr.TakeNextSample(ref data, infos);

            Assert.AreEqual(ReturnCode.NoData, ret);

            DomainParticipant otherParticipant = AssemblyInitializer.Factory.CreateParticipant(AssemblyInitializer.INFOREPO_DOMAIN);

            Assert.IsNotNull(otherParticipant);
            otherParticipant.BindTcpTransportConfig();

            TestStructTypeSupport support = new TestStructTypeSupport();
            string     typeName           = support.GetTypeName();
            ReturnCode result             = support.RegisterType(otherParticipant, typeName);

            Assert.AreEqual(ReturnCode.Ok, result);

            TopicQos qos   = TestHelper.CreateNonDefaultTopicQos();
            var      topic = otherParticipant.CreateTopic(TestContext.TestName, typeName, qos);

            Assert.IsNotNull(topic);

            Thread.Sleep(500);

            ret = _dr.TakeNextSample(ref data, infos);
            Assert.AreEqual(ReturnCode.Ok, ret);
            Assert.AreEqual(typeName, data.TypeName);
            Assert.IsNotNull(data.Key);
            TestHelper.TestNonDefaultTopicData(data);

            ret = otherParticipant.DeleteContainedEntities();
            Assert.AreEqual(ReturnCode.Ok, ret);

            ret = AssemblyInitializer.Factory.DeleteParticipant(otherParticipant);
            Assert.AreEqual(ReturnCode.Ok, ret);
        }
Example #6
0
 public override TopicBuiltinTopicData CopyFrom(TopicBuiltinTopicData other)
 {
     throw new NotImplementedException();
 }
Example #7
0
        public ReturnCode GetDiscoveredTopicData(ref TopicBuiltinTopicData data, InstanceHandle handle)
        {
            ReturnCode result;
            GCHandle dataHandle = GCHandle.Alloc(data, GCHandleType.Normal);

            result = (ReturnCode)  Gapi.DomainParticipant.get_discovered_topic_data(
                    GapiPeer,
                    GCHandle.ToIntPtr(dataHandle),
                    handle,
                    TopicDataMarshaler.CopyOutDelegate);

            data = dataHandle.Target as TopicBuiltinTopicData;
            dataHandle.Free();

            return result;
        }
 internal void CopyOut(ref TopicBuiltinTopicData to)
 {
     CopyOut(GapiPtr, ref to);
 }
 internal DDS.ReturnCode CopyIn(TopicBuiltinTopicData from)
 {
     cleanupRequired = true;
     return CopyIn(from, GapiPtr);
 }
        internal static void CopyOut(IntPtr from, ref TopicBuiltinTopicData to)
        {
            if (to == null) to = new TopicBuiltinTopicData();

            BuiltinTopicKeyMarshaler.CopyOut(from, ref to.Key, offset_key);

            IntPtr namePtr = BaseMarshaler.ReadIntPtr(from, offset_name);
            to.Name = Marshal.PtrToStringAnsi(namePtr);

            IntPtr typeNamePtr = BaseMarshaler.ReadIntPtr(from, offset_type_name);
            to.TypeName = Marshal.PtrToStringAnsi(typeNamePtr);

            DurabilityQosPolicyMarshaler.CopyOut(from, ref to.Durability, offset_durability);
            DeadlineQosPolicyMarshaler.CopyOut(from, ref to.Deadline, offset_deadline);
            LatencyBudgetQosPolicyMarshaler.CopyOut(from, ref to.LatencyBudget, offset_latency_budget);
            LivelinessQosPolicyMarshaler.CopyOut(from, ref to.Liveliness, offset_liveliness);
            ReliabilityQosPolicyMarshaler.CopyOut(from, ref to.Reliability, offset_reliability);
            TransportPriorityQosPolicyMarshaler.CopyOut(from, ref to.TransportPriority, offset_transport_priority);
            LifespanQosPolicyMarshaler.CopyOut(from, ref to.Lifespan, offset_lifespan);
            DestinationOrderQosPolicyMarshaler.CopyOut(from, ref to.DestinationOrder, offset_destination_order);
            HistoryQosPolicyMarshaler.CopyOut(from, ref to.History, offset_history);
            ResourceLimitsQosPolicyMarshaler.CopyOut(from, ref to.ResourceLimits, offset_resource_limits);
            OwnershipQosPolicyMarshaler.CopyOut(from, ref to.Ownership, offset_ownership);
            TopicDataQosPolicyMarshaler.CopyOut(from, ref to.TopicData, offset_topic_data);
        }
        internal static DDS.ReturnCode CopyIn(TopicBuiltinTopicData from, IntPtr to)
        {
            DDS.ReturnCode result;
            if (from != null) {
                result = BuiltinTopicKeyMarshaler.CopyIn(from.Key, to, offset_key);

                IntPtr namePtr = Marshal.StringToHGlobalAnsi(from.Name);
                BaseMarshaler.Write(to, offset_name, namePtr);

                IntPtr typeNamePtr = Marshal.StringToHGlobalAnsi(from.TypeName);
                BaseMarshaler.Write(to, offset_type_name, typeNamePtr);

                if (result == DDS.ReturnCode.Ok) {
                    result = DurabilityQosPolicyMarshaler.CopyIn(
                            from.Durability, to, offset_durability);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = DurabilityServiceQosPolicyMarshaler.CopyIn(
                            from.DurabilityService, to, offset_durability_service);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = DeadlineQosPolicyMarshaler.CopyIn(
                            from.Deadline, to, offset_deadline);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = LatencyBudgetQosPolicyMarshaler.CopyIn(
                            from.LatencyBudget, to, offset_latency_budget);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = LivelinessQosPolicyMarshaler.CopyIn(
                            from.Liveliness, to, offset_liveliness);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = ReliabilityQosPolicyMarshaler.CopyIn(
                            from.Reliability, to, offset_reliability);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = DestinationOrderQosPolicyMarshaler.CopyIn(
                            from.DestinationOrder, to, offset_destination_order);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = TransportPriorityQosPolicyMarshaler.CopyIn(
                            from.TransportPriority, to, offset_transport_priority);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = LifespanQosPolicyMarshaler.CopyIn(
                            from.Lifespan, to, offset_lifespan);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = DestinationOrderQosPolicyMarshaler.CopyIn(
                            from.DestinationOrder, to, offset_destination_order);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = HistoryQosPolicyMarshaler.CopyIn(
                            from.History, to, offset_history);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = ResourceLimitsQosPolicyMarshaler.CopyIn(
                            from.ResourceLimits, to, offset_resource_limits);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = OwnershipQosPolicyMarshaler.CopyIn(
                            from.Ownership, to, offset_ownership);
                }
                if (result == DDS.ReturnCode.Ok) {
                    result = TopicDataQosPolicyMarshaler.CopyIn(
                            from.TopicData, to, offset_topic_data);
                }
            } else {
                result = DDS.ReturnCode.BadParameter;
                DDS.OpenSplice.OS.Report(
                        DDS.OpenSplice.ReportType.OS_ERROR,
                        "DDS.OpenSplice.CustomMarshalers.TopicBulitinTopicDataMarshaler.CopyIn",
                        "DDS/OpenSplice/CustomMarshalers/QosToplevelMarshalers.cs",
                        DDS.ErrorCode.InvalidValue,
                        "TopicBulitinTopicData attribute may not be a null pointer.");
            }
            return result;
        }