• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# DDS类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中DDS的典型用法代码示例。如果您正苦于以下问题:C# DDS类的具体用法?C# DDS怎么用?C# DDS使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



DDS类属于命名空间,在下文中一共展示了DDS类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: checkParticipant

    static bool checkParticipant(DDS.DomainParticipant participant)
    {
        DDS.DomainParticipantQos participantQos = new DDS.DomainParticipantQos();
        participant.get_qos(participantQos);

        DDS.PropertySeq properties = participantQos.property_qos.value;

        for (int i = 0; i < properties.length; i++)
        {
            if (String.Compare(properties.get_at(i).name,
                "dds.transport.UDPv4.builtin.send_socket_buffer_size") == 0)
            {
                if (String.Compare(properties.get_at(i).value, NEW_SOCKET_BUFFER_SIZE_STRING)
                     != 0)
                {
                    Console.WriteLine("Error, send_socket_buffer_size...not modified");
                    return false;
                }
            }
            if (String.Compare(properties.get_at(i).name,
                "dds.transport.UDPv4.builtin.recv_socket_buffer_size") == 0)
            {
                string value = properties.get_at(i).value;
                if (String.Compare(properties.get_at(i).value, NEW_SOCKET_BUFFER_SIZE_STRING)
                     != 0)
                {
                    Console.WriteLine("Error, recv_socket_buffer_size...not modified");
                    return false;
                }
            }
        }
        return true;
    }
开发者ID:rosemwahlin,项目名称:rticonnextdds-examples,代码行数:33,代码来源:numbers_publisher.cs


示例2: RequestedDeadlineMissedValid

 public static bool RequestedDeadlineMissedValid(DDS.IDataReader reader, int totalCount
     , int totalCountChange)
 {
     bool result = false;
     DDS.RequestedDeadlineMissedStatus holder = new DDS.RequestedDeadlineMissedStatus();
     DDS.ReturnCode rc = reader.GetRequestedDeadlineMissedStatus(ref holder);
     if (rc == DDS.ReturnCode.Ok)
     {
         DDS.RequestedDeadlineMissedStatus status = holder;
         if (status.TotalCount == totalCount)
         {
             if (status.TotalCountChange == totalCountChange)
             {
                 result = true;
             }
             else
             {
                 System.Console.Error.WriteLine("requested_deadline_missed.TotalCountChange != '"
                      + totalCountChange + "', but '" + status.TotalCountChange + "'.");
             }
         }
         else
         {
             System.Console.Error.WriteLine("requested_deadline_missed.TotalCount != '" + totalCount
                  + "', but '" + status.TotalCount + "'.");
         }
     }
     else
     {
         System.Console.Error.WriteLine("get_requested_deadline_missed_status returned " +
              rc);
     }
     return result;
 }
开发者ID:shizhexu,项目名称:opensplice,代码行数:34,代码来源:StatusValidator.cs


示例3: OnLivelinessChanged

 public virtual void OnLivelinessChanged(DDS.IDataReader reader, DDS.LivelinessChangedStatus
      status)
 {
     
     onLivelinessChangedCalled = true;
     lcStatus = status;
 }
开发者ID:shizhexu,项目名称:opensplice,代码行数:7,代码来源:MyDataReaderListener.cs


示例4: Report

 public static extern void Report(
         ReportType type,
         string reportContext,
         string fileName,
         int lineNo,
         DDS.ErrorCode reportCode,
         string description);
开发者ID:xrl,项目名称:opensplice_dds,代码行数:7,代码来源:ErrorInfo.cs


示例5: StatussesValid

 public static bool StatussesValid(DDS.IDataReader reader, int rdmTotalCount, int rdmTotalCountChange
     , int riqsTotalCount, int riqsTotalCountChange, int srTotalCount, int srTotalCountChange
     , int lcActiveCount, int lcActiveCountChange, int lcInactiveCount, int lcInactiveCountChange
     , int smTotalCount, int smTotalCountChange, int slTotalCount, int slTotalCountChange
     )
 {
     bool result = false;
     if (RequestedDeadlineMissedValid(reader, rdmTotalCount, rdmTotalCountChange))
     {
         if (RequestedIncompatibleQosValid(reader, riqsTotalCount, riqsTotalCountChange))
         {
             if (SampleRejectedValid(reader, srTotalCount, srTotalCountChange))
             {
                 if (LivelinessChangedValid(reader, lcActiveCount, lcActiveCountChange, lcInactiveCount
                     , lcInactiveCountChange))
                 {
                     if (SubscriptionMatchValid(reader, smTotalCount, smTotalCountChange))
                     {
                         if (SampleLostValid(reader, slTotalCount, slTotalCountChange))
                         {
                             result = true;
                         }
                     }
                 }
             }
         }
     }
     return result;
 }
开发者ID:shizhexu,项目名称:opensplice,代码行数:29,代码来源:StatusValidator.cs


示例6: create_type_code

    private static DDS.TypeCode create_type_code(DDS.TypeCodeFactory tcf)
    {
        DDS.UnionMemberSeq members = new DDS.UnionMemberSeq();

        /* First, we create the typeCode for a union */
        /* Default-member index refers to which member of the union
         * will be the default one. In this example index = 1 refers
         * to the the member 'aLong'. Take into account that index
         * starts in 0 */
        try {
            DDS.TypeCode unionTC = tcf.create_union_tc("Foo",
                DDS.ExtensibilityKind.MUTABLE_EXTENSIBILITY,
                DDS.TypeCode.TC_LONG,
                1, /* default-member index */
                members); /* For now, it does not have any member */

            /* Case 1 will be a short named aShort */
            unionTC.add_member("aShort", DDS.DynamicData.MEMBER_ID_UNSPECIFIED,
                    DDS.TypeCode.TC_SHORT, DDS.TypeCode.NONKEY_MEMBER);

            /* Case 2, the default, will be a long named aLong */
            unionTC.add_member("aLong", 2, DDS.TypeCode.TC_LONG,
                    DDS.TypeCode.NONKEY_MEMBER);

            /* Case 3 will be a double named aDouble */
            unionTC.add_member("aDouble", 3, DDS.TypeCode.TC_DOUBLE,
                    DDS.TypeCode.NONKEY_MEMBER);

            return unionTC;
        } catch (Exception e) {
            Console.WriteLine("register_type error {0}", e);
            return null;
        }
    }
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:34,代码来源:dynamic_data_union_example.cs


示例7: shutdown

    static void shutdown(
        DDS.DomainParticipant participant)
    {
        /* Delete all entities */

        if (participant != null) {
            participant.delete_contained_entities();
            DDS.DomainParticipantFactory.get_instance().delete_participant(
                ref participant);
        }

        /* RTI Connext provides finalize_instance() method on
           domain participant factory for users who want to release memory
           used by the participant factory. Uncomment the following block of
           code for clean destruction of the singleton. */
        /*
        try {
            DDS.DomainParticipantFactory.finalize_instance();
        }
        catch(DDS.Exception e) {
            Console.WriteLine("finalize_instance error {0}", e);
            throw e;
        }
        */
    }
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:25,代码来源:tbf_subscriber.cs


示例8: on_data_available

    public override void on_data_available( DDS.DataReader reader )
    {
        DDS.PublicationBuiltinTopicDataDataReader builtin_reader =
                (DDS.PublicationBuiltinTopicDataDataReader)reader;

        try {
            builtin_reader.take(
                data_seq,
                info_seq,
                DDS.ResourceLimitsQosPolicy.LENGTH_UNLIMITED,
                DDS.SampleStateKind.ANY_SAMPLE_STATE,
                DDS.ViewStateKind.ANY_VIEW_STATE,
                DDS.InstanceStateKind.ANY_INSTANCE_STATE);
        } catch (DDS.Retcode_NoData) {
            return;
        } catch (DDS.Exception e) {
            Console.WriteLine("take error {0}", e);
            return;
        }

        System.Int32 data_length = data_seq.length;
        for (int i = 0; i < data_length; ++i) {

            if (!info_seq.get_at(i).valid_data) {
                continue;
            }
            Console.WriteLine("-----");
            Console.WriteLine("Found topic \"{0}\"",
                data_seq.get_at(i).topic_name);
            Console.WriteLine("participant: {0:x8}{1:x8}{2:x8}",
                data_seq.get_at(i).participant_key.value1,
                data_seq.get_at(i).participant_key.value2,
                data_seq.get_at(i).participant_key.value3);
            Console.WriteLine("datawriter: {0:x8}{1:x8}{2:x8}",
                data_seq.get_at(i).key.value1,
                data_seq.get_at(i).key.value2,
                data_seq.get_at(i).key.value3);
            Console.WriteLine("type:");

            if (data_seq.get_at(i).type_code == null) {
                Console.WriteLine("No type code received, perhaps increase " +
                    "type_code_max_serialized_length?");
                continue;
            }
            /* Using the type_code propagated we print the data type
             * with print_IDL(). */
            try {
                data_seq.get_at(i).type_code.print_IDL(2);
            } catch (DDS.Exception) {
                Console.WriteLine("error printing IDL");
            }
        }

        try {
            builtin_reader.return_loan(data_seq, info_seq);
        } catch (DDS.Exception e) {
            Console.WriteLine("return loan error {0}", e);
        }
    }
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:59,代码来源:msg_subscriber.cs


示例9: poll_data

    /* Start changes for Ordered_Presentation*/
    /* No listener is needed; we poll readers in this function */
    private static void poll_data(DDS.DataReader[] reader, int numreaders)
    {
        DDS.SampleInfoSeq info_seq = new DDS.SampleInfoSeq();
        orderedSeq data_seq = new orderedSeq();

        for (int r = 0; r < numreaders; ++r) {
            try {
                ((orderedDataReader)(reader[r])).take(
                    data_seq,
                    info_seq,
                    DDS.ResourceLimitsQosPolicy.LENGTH_UNLIMITED,
                    DDS.SampleStateKind.ANY_SAMPLE_STATE,
                    DDS.ViewStateKind.ANY_VIEW_STATE,
                    DDS.InstanceStateKind.ANY_INSTANCE_STATE);
            } catch (DDS.Retcode_NoData) {
                // Not an error
                return;
            } catch (DDS.Exception e) {
                // Is an error
                Console.WriteLine("take error {0}", e);
                return;
            }

            System.Int32 data_length = data_seq.length;
            for (int i = 0; i < data_length; ++i) {
                if (!info_seq.get_at(i).valid_data) {
                    continue;
                }
                // Make things a bit easier to read.
                int ident = r;
                while (ident-- != 0) {
                    Console.Write("\t");
                }
                Console.WriteLine("Reader {0}: Instance{1}->value = {2}", r,
                    data_seq.get_at(i).id, data_seq.get_at(i).value);
            }

            try {
                ((orderedDataReader)(reader[r])).return_loan(data_seq,
                        info_seq);
            } catch (DDS.Exception e) {
                Console.WriteLine("return loan error {0}", e);
            }

            info_seq.ensure_length(0, 0);
            data_seq.ensure_length(0, 0);
        }
    }
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:50,代码来源:ordered_subscriber.cs


示例10: CopyIn

 internal static DDS.ReturnCode CopyIn(
         DDS.OfferedIncompatibleQosStatus from, 
         IntPtr to, 
         int offset)
 {
     DDS.ReturnCode result = DDS.ReturnCode.Ok;
     if (from != null) {
         Write(to, offset_total_count, from.TotalCount);
         Write(to, offset_total_count_change, from.TotalCountChange);
         Write(to, offset_last_policy_id, (int) from.LastPolicyId);
         result = QosPolicyCountSequenceMarshaler.CopyIn(from.Policies, to, offset_policies);
     } else {
         result = DDS.ReturnCode.BadParameter;
         DDS.OpenSplice.OS.Report(
                 DDS.OpenSplice.ReportType.OS_ERROR,
                 "DDS.OpenSplice.CustomMarshalers.OfferedIncompatibleQosStatusMarshaler.CopyIn",
                 "DDS/OpenSplice/CustomMarshalers/StatusMarshalers.cs",
                 DDS.ErrorCode.InvalidValue,
                 "OfferedIncompatibleQosStatus attribute may not be a null pointer.");
     }
     return result; 
 }
开发者ID:shizhexu,项目名称:opensplice,代码行数:22,代码来源:StatusMarshaler.cs


示例11: on_data_available

        public override void on_data_available(DDS.DataReader reader)
        {
            /* We need to create a DynamicDataReader to receive the DynamicData
             */
            DDS.DynamicDataReader DynamicData_reader =
                (DDS.DynamicDataReader)reader;

            try {
                DynamicData_reader.take(
                    data_seq,
                    info_seq,
                    DDS.ResourceLimitsQosPolicy.LENGTH_UNLIMITED,
                    DDS.SampleStateKind.ANY_SAMPLE_STATE,
                    DDS.ViewStateKind.ANY_VIEW_STATE,
                    DDS.InstanceStateKind.ANY_INSTANCE_STATE);
            }
            catch(DDS.Retcode_NoData) {
                return;
            }
            catch(DDS.Exception e) {
                Console.WriteLine("take error {0}", e);
                return;
            }

            System.Int32 data_length = data_seq.length;
            for (int i = 0; i < data_length; ++i) {
                if (info_seq.get_at(i).valid_data) {
                    data_seq.get_at(i).print(1);
                }
            }

            try {
                DynamicData_reader.return_loan(data_seq, info_seq);
            }
            catch(DDS.Exception e) {
                Console.WriteLine("return loan error {0}", e);
            }
        }
开发者ID:hakiri,项目名称:rticonnextdds-examples,代码行数:38,代码来源:Shapes_subscriber.cs


示例12: GetDiscoveredTopicData

 public ReturnCode GetDiscoveredTopicData(
     ref DDS.TopicBuiltinTopicData[] topic_data,
     long topic_handle)
 {
     throw new System.NotImplementedException();
     //return realParticipant.get_discovered_topic_data(
     //        topic_data, topic_handle);
 }
开发者ID:xrl,项目名称:opensplice_dds,代码行数:8,代码来源:ExtDomainParticipant.cs


示例13: on_data_available

        public override void on_data_available( DDS.DataReader reader )
        {
            sequencesDataReader sequences_reader =
                (sequencesDataReader)reader;

            try {
                sequences_reader.take(
                    data_seq,
                    info_seq,
                    DDS.ResourceLimitsQosPolicy.LENGTH_UNLIMITED,
                    DDS.SampleStateKind.ANY_SAMPLE_STATE,
                    DDS.ViewStateKind.ANY_VIEW_STATE,
                    DDS.InstanceStateKind.ANY_INSTANCE_STATE);
            } catch (DDS.Retcode_NoData) {
                return;
            } catch (DDS.Exception e) {
                Console.WriteLine("take error {0}", e);
                return;
            }

            System.Int32 data_length = data_seq.length;
            for (int i = 0; i < data_length; ++i) {
                if (info_seq.get_at(i).valid_data) {
                    sequencesTypeSupport.print_data(data_seq.get_at(i));
                }
            }

            try {
                sequences_reader.return_loan(data_seq, info_seq);
            } catch (DDS.Exception e) {
                Console.WriteLine("return loan error {0}", e);
            }
        }
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:33,代码来源:sequences_subscriber.cs


示例14: on_data_available

        /**** Start changes for Advanced_Keys ****/
        public override void on_data_available(DDS.DataReader reader)
        {
            keysDataReader keys_reader =
                (keysDataReader)reader;

            //// Start changes for Advanced_Keys

            while (true)
            {
                /* Given DDS_HANDLE_NIL as a parameter, take_next_instance returns
                a sequence containing samples from only the next (in a well-determined
                but unspecified order) un-taken instance.
                */

                try
                {
                    keys_reader.take_next_instance(
                        data_seq,
                        info_seq,
                        DDS.ResourceLimitsQosPolicy.LENGTH_UNLIMITED,
                        ref DDS.InstanceHandle_t.HANDLE_NIL,
                        DDS.SampleStateKind.ANY_SAMPLE_STATE,
                        DDS.ViewStateKind.ANY_VIEW_STATE,
                        DDS.InstanceStateKind.ANY_INSTANCE_STATE);
                }
                catch (DDS.Retcode_NoData)
                {
                    break;
                }
                catch (DDS.Exception e)
                {
                    Console.WriteLine("take error {0}", e);
                    return;
                }

                System.Int32 data_length = data_seq.length;
                /* We process all the obtained samples for a particular instance */
                for (int i = 0; i < data_length; ++i)
                {
                    /* We first check if the sample includes valid data */
                    if (info_seq.get_at(i).valid_data)
                    {
                        if (info_seq.get_at(i).view_state == DDS.ViewStateKind.NEW_VIEW_STATE)
                        {
                            new_instance_found(keys_reader, info_seq.get_at(i), data_seq.get_at(i));
                        }

                        /* We check if the obtained samples are associated to one
                        of the instances of interest.
                        Since take_next_instance gives sequences of the same instance,
                        we only need to test this for the first sample obtained.
                        */
                        if (i == 0 && !key_is_relevant(data_seq.get_at(i)))
                        {
                            break;
                        }

                        handle_data(keys_reader, info_seq.get_at(i), data_seq.get_at(i));
                    }
                    else
                    {
                        /* Since there is not valid data, it may include metadata */
                        keys dummy = null; ;

                        dummy = keysTypeSupport.create_data();
                        if (dummy == null)
                        {
                            throw new ApplicationException(
                            "keysTypeSupport.create_data error");
                        }

                        DDS.InstanceHandle_t handle = info_seq.get_at(i).instance_handle;

                        try
                        {
                            keys_reader.get_key_value(dummy, ref handle);
                        }
                        catch (DDS.Exception e)
                        {
                            Console.WriteLine(" get_key_value error {0}", e);
                        }

                        /* Here we print a message and change the instance state
                        if the instance state is ALIVE_NO_WRITERS or ALIVE_DISPOSED */
                        if (info_seq.get_at(i).instance_state == DDS.InstanceStateKind.NOT_ALIVE_NO_WRITERS_INSTANCE_STATE)
                        {
                            instance_lost_writers(keys_reader, info_seq.get_at(i), dummy);
                        }
                        else if (info_seq.get_at(i).instance_state == DDS.InstanceStateKind.NOT_ALIVE_DISPOSED_INSTANCE_STATE)
                        {
                            instance_disposed(keys_reader, info_seq.get_at(i), dummy);
                        }
                    }
                }

                try
                {
                    keys_reader.return_loan(data_seq, info_seq);
                }
//.........这里部分代码省略.........
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:101,代码来源:keys_subscriber.cs


示例15: on_data_available

        public override void on_data_available(DDS.DataReader reader)
        {
            keysDataReader keys_reader =
                (keysDataReader)reader;

            try {
                keys_reader.take(
                    data_seq,
                    info_seq,
                    DDS.ResourceLimitsQosPolicy.LENGTH_UNLIMITED,
                    DDS.SampleStateKind.ANY_SAMPLE_STATE,
                    DDS.ViewStateKind.ANY_VIEW_STATE,
                    DDS.InstanceStateKind.ANY_INSTANCE_STATE);
            }
            catch(DDS.Retcode_NoData) {
                return;
            }
            catch(DDS.Exception e) {
                Console.WriteLine("take error {0}", e);
                return;
            }

            System.Int32 data_length = data_seq.length;
            for (int i = 0; i < data_length; ++i)
            {
                /* Start changes for Keyed_Data */
                /* We first check if the sample includes valid data */
                if (info_seq.get_at(i).valid_data)
                {
                    if (info_seq.get_at(i).view_state ==
                        DDS.ViewStateKind.NEW_VIEW_STATE)
                    {
                        Console.WriteLine("Found new instance; code = {0}",
                            data_seq.get_at(i).code);
                    }

                    Console.WriteLine("Instance {0}: x: {1}, y: {2}",
                        data_seq.get_at(i).code, data_seq.get_at(i).x,
                        data_seq.get_at(i).y);
                }
                else
                {
                    /* Since there is not valid data, it may include metadata */
                    keys dummy = new keys();
                    try
                    {
                        DDS.InstanceHandle_t temp =
                            info_seq.get_at(i).instance_handle;
                        keys_reader.get_key_value(dummy, ref temp);
                    }
                    catch (DDS.Exception e)
                    {
                        Console.WriteLine("get_key_value error {0}", e);
                    }

                    /* Here we print a message if the instance state is ALIVE_NO_WRITERS or ALIVE_DISPOSED */
                    if (info_seq.get_at(i).instance_state ==
                        DDS.InstanceStateKind.NOT_ALIVE_NO_WRITERS_INSTANCE_STATE)
                    {
                        Console.WriteLine("Instance {0} has no writers",
                            dummy.code);
                    }
                    else if (info_seq.get_at(i).instance_state ==
                        DDS.InstanceStateKind.NOT_ALIVE_DISPOSED_INSTANCE_STATE)
                    {
                        Console.WriteLine("Instance {0} disposed",
                            dummy.code);
                    }
                }
                /* End changes for Keyed_Data */
            }

            try {
                keys_reader.return_loan(data_seq, info_seq);
            }
            catch(DDS.Exception e) {
                Console.WriteLine("return loan error {0}", e);
            }
        }
开发者ID:hakiri,项目名称:rticonnextdds-examples,代码行数:79,代码来源:keys_subscriber.cs


示例16: on_liveliness_changed

 public override void on_liveliness_changed(
     DDS.DataReader reader,
     ref DDS.LivelinessChangedStatus status)
 {
 }
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:5,代码来源:tbf_subscriber.cs


示例17: on_sample_rejected

 public override void on_sample_rejected(
     DDS.DataReader reader,
     ref DDS.SampleRejectedStatus status)
 {
 }
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:5,代码来源:tbf_subscriber.cs


示例18: on_requested_incompatible_qos

 public override void on_requested_incompatible_qos(
     DDS.DataReader reader,
     DDS.RequestedIncompatibleQosStatus status)
 {
 }
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:5,代码来源:tbf_subscriber.cs


示例19: on_data_available

        public override void on_data_available(DDS.DataReader reader)
        {
            tbfDataReader tbf_reader =
                (tbfDataReader)reader;

            try {
                tbf_reader.take(
                    data_seq,
                    info_seq,
                    DDS.ResourceLimitsQosPolicy.LENGTH_UNLIMITED,
                    DDS.SampleStateKind.ANY_SAMPLE_STATE,
                    DDS.ViewStateKind.ANY_VIEW_STATE,
                    DDS.InstanceStateKind.ANY_INSTANCE_STATE);
            }
            catch(DDS.Retcode_NoData) {
                return;
            }
            catch(DDS.Exception e) {
                Console.WriteLine("take error {0}", e);
                return;
            }

            System.Int32 data_length = data_seq.length;
            for (int i = 0; i < data_length; ++i) {
                if (info_seq.get_at(i).valid_data) {
                    /* Here we get source timestamp of the sample using the
                     * sample info.
                     *
                     * info_seq[i].source_timestamp returns DDS_Time_t
                     * ({seconds,nanoseconds}). We convert nanoseconds to
                     * seconds to get the decimal part of the timestamp.
                     */
                    System.Double source_timestamp =
                        info_seq.get_at(i).source_timestamp.sec +
                        (info_seq.get_at(i).source_timestamp.nanosec /
                         Constant.NANOSECOND);

                    Console.WriteLine(source_timestamp.ToString("0.00000") +
                        "\t" + data_seq.get_at(i).code + "\t\t" +
                        data_seq.get_at(i).x);
                }
            }

            try {
                tbf_reader.return_loan(data_seq, info_seq);
            }
            catch(DDS.Exception e) {
                Console.WriteLine("return loan error {0}", e);
            }
        }
开发者ID:jmlvega,项目名称:rticonnextdds-examples,代码行数:50,代码来源:tbf_subscriber.cs


示例20: on_data_on_readers

        public override void on_data_on_readers(
                DDS.Subscriber sub)
        {
            /* IMPORTANT for GROUP access scope: Invoking begin_access() */
            sub.begin_access();

            /* Obtain DataReaders. We obtain a sequence of DataReaders that specifies
            the order in which each sample should be read */
            try {
                sub.get_datareaders(my_datareaders,
                    DDS.SampleStateKind.ANY_SAMPLE_STATE,
                    DDS.ViewStateKind.ANY_VIEW_STATE,
                    DDS.InstanceStateKind.ANY_INSTANCE_STATE);
            } catch (DDS.Exception e) {
                Console.WriteLine("get_datareaders error {0}", e);
                my_datareaders.ensure_length(0, 0);
                sub.end_access();
                return;
            }

            /* Read the samples received, following the DataReaders sequence */
            try {
                for (int i = 0; i < my_datareaders.length; ++i) {
                    try {
                        ordered_group_reader = (ordered_groupDataReader)
                            my_datareaders.get_at(i);
                    } catch (DDS.Exception e) {
                        Console.WriteLine("my_datareaders.get_at error {0}", e);
                        sub.end_access();
                        return;
                    }

                    /* IMPORTANT. Use take_next_sample(). We need to take only
                     * one sample each time, as we want to follow the sequence
                     * of DataReaders. This way the samples will be returned in
                     * the order in which they were modified
                     */
                    ordered_group_reader.take_next_sample(data, info);

                    if (info.valid_data) {
                        ordered_groupTypeSupport.print_data(data);
                    }

                    my_datareaders.ensure_length(0, 0);

                    /* IMPORTANT for GROUP access scope: Invoking end_access() */
                    sub.end_access();
                }
            } catch (DDS.Retcode_NoData noData) {
                //No data to process
            }
        }
开发者ID:hakiri,项目名称:rticonnextdds-examples,代码行数:52,代码来源:ordered_group_subscriber.cs



注:本文中的DDS类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# DEBUG_PROPERTY_INFO类代码示例发布时间:2022-05-24
下一篇:
C# DCFactory类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap