예제 #1
0
        /// <summary>
        /// Create DataWriter(s)
        /// </summary>
        public void createWriter()
        {
            status = publisher.GetDefaultDataWriterQos(ref WQosH);
            ErrorHandler.checkStatus(status, "Publisher.GetDefaultDataWriterQos");
            status = publisher.CopyFromTopicQos(ref WQosH, topicQos);
            ErrorHandler.checkStatus(status, "Publisher.CopyFromTopicQos");
            if (durabilityKind.Equals("transient"))
            {
                WQosH.Durability.Kind = DurabilityQosPolicyKind.TransientDurabilityQos;
            }
            else
            {
                WQosH.Durability.Kind = DurabilityQosPolicyKind.PersistentDurabilityQos;
            }

            WQosH.WriterDataLifecycle.AutodisposeUnregisteredInstances = autoDisposeFlag;
            writer = publisher.CreateDataWriter(
                topic,
                WQosH,
                null,
                StatusKind.Any);
            ErrorHandler.checkHandle(writer, "Publisher.CreateDataWriter");

            if (exampleName.Equals("Lifecycle"))
            {
                writerStopper = publisher.CreateDataWriter(
                    topic,
                    WQosH,
                    null,
                    StatusKind.Any);
                ErrorHandler.checkHandle(writerStopper, "Publisher.CreateDataWriter");
            }
        }
예제 #2
0
        /// <summary>
        /// Utility method to create a DDS Topic.
        /// </summary>
        /// <param name="topicName">The Topic name to create the topic with.</param>
        /// <param name="exampleNameToCreateTopicFor">The name of the example we are
        /// creating the topic for. This is used to define any specific Qos that the example
        /// requires.</param>
        /// <returns>The newly created Topic</returns>
        public ITopic createTopic(String topicName)
        {
            status = participant.GetDefaultTopicQos(ref topicQos);
            ErrorHandler.checkStatus(status, "DomainParticipant.GetDefaultTopicQos");

            switch (exampleName)
            {
            case "ContentFilteredTopic":
            case "Durability":
            case "HelloWorld":
            case "WaitSet":
            case "Lifecycle":
                topicQos.Reliability.Kind = ReliabilityQosPolicyKind.ReliableReliabilityQos;
                if (durabilityKind.Equals("transient"))
                {
                    topicQos.Durability.Kind = DurabilityQosPolicyKind.TransientDurabilityQos;
                }
                else
                {
                    topicQos.Durability.Kind = DurabilityQosPolicyKind.PersistentDurabilityQos;
                }
                break;

            case "Ownership":
                topicQos.Reliability.Kind = ReliabilityQosPolicyKind.ReliableReliabilityQos;
                topicQos.Ownership.Kind   = OwnershipQosPolicyKind.ExclusiveOwnershipQos;
                break;

            case "QueryCondition":
                topicQos.Reliability.Kind = ReliabilityQosPolicyKind.ReliableReliabilityQos;
                break;

            case "Listener":
                topicQos.Reliability.Kind = ReliabilityQosPolicyKind.ReliableReliabilityQos;
                topicQos.Durability.Kind  = DurabilityQosPolicyKind.TransientDurabilityQos;
                // DeadlineQoSPolicy : period used to trigger the listener
                // (on_requested_deadline_missed)
                topicQos.Deadline.Period.NanoSec = 0;
                topicQos.Deadline.Period.Sec     = 5;
                break;

            default:
                Console.WriteLine("Unidentified example to create topic for.");
                break;
            }

            status = participant.SetDefaultTopicQos(topicQos);
            ErrorHandler.checkStatus(status, "DomainParticipant.SetDefaultTopicQos");
            topic = participant.CreateTopic(
                topicName,
                typeName,
                topicQos,
                null,
                StatusKind.Any
                );
            ErrorHandler.checkHandle(topic, "DomainParticipant.CreateTopic");
            return(topic);
        }
        /// <summary>
        /// Create a Publisher
        /// </summary>
        public void createPublisher()
        {
            status = participant.GetDefaultPublisherQos(ref pubQos);
            ErrorHandler.checkStatus(status, "DomainParticipant.GetDefaultPublisherQos");

            pubQos.Partition.Name    = new String[1];
            pubQos.Partition.Name[0] = partitionName;
            publisher = participant.CreatePublisher(pubQos);
            ErrorHandler.checkHandle(publisher, "DomainParticipant.CreatePublisher");
        }
예제 #4
0
        /// <summary>
        /// Creates a DataReader
        /// </summary>
        /// <param name="exampleNameToCreateReaderFor">The example name to create the
        /// DataReader for. This param is used to define any specific Qos values the
        /// example requires.</param>
        /// <param name="filtered">This param determines whether a reader will be created
        /// for a normal or filtered topic.</param>
        public void createReader(Boolean filtered)
        {
            status = subscriber.GetDefaultDataReaderQos(ref RQosH);
            ErrorHandler.checkStatus(status, "Subscriber.GetDefaultDataReaderQoS");
            status = subscriber.CopyFromTopicQos(ref RQosH, topicQos);
            ErrorHandler.checkStatus(status, "Subscriber.CopyFromTopicQoS");

            switch (exampleName)
            {
            case "ContentFilteredTopic":
            case "Listener":
                RQosH.Durability.Kind = DurabilityQosPolicyKind.TransientDurabilityQos;
                break;

            case "Durability":
                if (durabilityKind.Equals("transient"))
                {
                    RQosH.Durability.Kind = DurabilityQosPolicyKind.TransientDurabilityQos;
                }
                else
                {
                    RQosH.Durability.Kind = DurabilityQosPolicyKind.PersistentDurabilityQos;
                }

                break;

            case "HelloWorld":
            case "Ownership":
            case "WaitSet":
            case "QueryCondition":
            case "Lifecycle":
                break;

            default:
                break;
            }
            if (filtered)
            {
                reader = subscriber.CreateDataReader(
                    filteredTopic,
                    RQosH,
                    null,
                    StatusKind.Any);
            }
            else
            {
                reader = subscriber.CreateDataReader(
                    topic,
                    RQosH,
                    null,
                    StatusKind.Any);
            }
            ErrorHandler.checkHandle(reader, "Subscriber.CreateDataReader");
        }
예제 #5
0
        /// <summary>
        /// Creates a Subscriber
        /// </summary>
        public void createSubscriber()
        {
            status = participant.GetDefaultSubscriberQos(ref subQos);
            ErrorHandler.checkStatus(status, "DomainParticipant.GetDefaultSubscriberQos");

            subQos.Partition.Name    = new String[1];
            subQos.Partition.Name[0] = partitionName;
            subscriber = participant.CreateSubscriber(
                subQos, null, StatusKind.Any);
            ErrorHandler.checkHandle(subscriber, "DomainParticipant.CreateSubscriber");
        }
예제 #6
0
 /// <summary>
 /// Delete a ContentFilteredTopic
 /// </summary>
 public void deleteContentFilteredTopic()
 {
     if (filteredTopic == null)
     {
         return;
     }
     else
     {
         status = participant.DeleteContentFilteredTopic(filteredTopic);
         ErrorHandler.checkStatus(status, "DDS.DomainParticipant.DeleteContentFilteredTopic");
     }
 }
예제 #7
0
 /// <summary>
 /// Delete the DomainParticipant.
 /// </summary>
 public void deleteParticipant()
 {
     status = dpf.DeleteParticipant(participant);
     ErrorHandler.checkStatus(status, "DomainParticipantFactory.DeleteParticipant");
 }
예제 #8
0
 /// <summary>
 /// Deletes the class's Subscriber
 /// </summary>
 public void deleteSubscriber()
 {
     status = participant.DeleteSubscriber(subscriber);
     ErrorHandler.checkStatus(status, "Participant.DeleteSubscriber");
 }
예제 #9
0
 /// <summary>
 /// Method to delete a data writer.
 /// </summary>
 /// <param name="dataWriter">The DataWriter instance to delete.</param>
 public void deleteWriter(IDataWriter dataWriter)
 {
     status = publisher.DeleteDataWriter(dataWriter);
     ErrorHandler.checkStatus(status, "Publisher.DeleteDataWriter");
 }
예제 #10
0
 /// <summary>
 /// Delete a Publisher
 /// </summary>
 public void deletePublisher()
 {
     status = participant.DeletePublisher(publisher);
     ErrorHandler.checkStatus(status, "DomainParticipant.DeletePublisher");
 }
예제 #11
0
 /// <summary>
 /// Delete the Topic
 /// </summary>
 public void deleteTopic()
 {
     status = participant.DeleteTopic(topic);
     ErrorHandler.checkStatus(
         status, "DDS.DomainParticipant.DeleteTopic");
 }
예제 #12
0
 /// <summary>
 /// Register the type we are interested with the DDS Infrastructure
 /// </summary>
 /// <param name="ts">The TypeSupport class</param>
 public void registerType(ITypeSupport ts)
 {
     typeName = ts.TypeName;
     status   = ts.RegisterType(participant, typeName);
     ErrorHandler.checkStatus(status, "ITypeSupport.RegisterType");
 }