private void InitializeWriter(AdapterWriterQos desiredQos)
        {
            var writerQos = new DataWriterQos();

            topicPublisher.GetDefaultDataWriterQos(ref writerQos);
            topicPublisher.CopyFromTopicQos(ref writerQos, currentTopic.TopicQos);
            if (desiredQos != null)
            {
                writerQos.WriterDataLifecycle.AutodisposeUnregisteredInstances = false;
                writerQos.Reliability.Kind = desiredQos.MessageReliabilityType.ConvertReliability();
                writerQos.Durability.Kind  = desiredQos.PersistenceType.ConvertPersistence();
            }

            // Create a DataWritter for the current Topic
            dataWriter = topicPublisher.CreateDataWriter(currentTopic.TopicMessageTopic, writerQos) as DataWriter <T>;
            ErrorHandler.CheckHandle(
                DataWriter, "Publisher.CreateDatawriter (InitializeWriter)");
        }
        public Publisher(Topic <T> topic, string partitionName, AdapterWriterQos desiredQos)
        {
            currentTopic = topic;

            IDomainParticipant participant = topic.Participant;
            var publisherQos = new PublisherQos();

            ReturnCode status = participant.GetDefaultPublisherQos(ref publisherQos);

            ErrorHandler.CheckStatus(status, "Publisher.GetDefaultSubscriberQos (Publisher)");
            publisherQos.Partition.Name    = new string[1];
            publisherQos.Partition.Name[0] = partitionName;

            // Create a Subscriber for the application.
            topicPublisher = participant.CreatePublisher(publisherQos);
            ErrorHandler.CheckHandle(
                topicPublisher, "Publisher.CreateSubscriber (Publisher)");

            InitializeWriter(desiredQos);
        }
Beispiel #3
0
 public abstract DataPublisher <TDataType> CreatePublisher(AdapterWriterQos qos, string partitionName);
Beispiel #4
0
 public override DataPublisher <TDataType> CreatePublisher(AdapterWriterQos qos, string partitionName)
 {
     return(new Publisher <TDataType>(topic, partitionName, qos));
 }