public ReturnCode DeleteSimulatedMultitopic(ITopicDescription smt)
        {
            ReturnCode status;

            /* Remove the DataWriter */
            status = multiPub.DeleteDataWriter(msgListener.NamedMessageDW);
            ErrorHandler.checkStatus(status, "DDS.Publisher.DeleteDatawriter");

            /* Remove the Publisher. */
            status = realParticipant.DeletePublisher(multiPub);
            ErrorHandler.checkStatus(
            status, "DDS.DomainParticipant.DeletePublisher");

            /* Remove the QueryCondition. */
            status = msgListener.NameServiceDR.DeleteReadCondition(
            msgListener.NameFinder);
            ErrorHandler.checkStatus(
            status, "DDS.DataReader.DeleteReadcondition");

            /* Remove the DataReaders. */
            status = multiSub.DeleteDataReader(msgListener.NameServiceDR);
            ErrorHandler.checkStatus(status, "DDS.Subscriber.DeleteDatareader");
            status = multiSub.DeleteDataReader(msgListener.ChatMessageDR);
            ErrorHandler.checkStatus(status, "DDS.Subscriber.DeleteDatareader");

            /* Remove the Subscriber. */
            status = realParticipant.DeleteSubscriber(multiSub);
            ErrorHandler.checkStatus(
            status, "DDS.DomainParticipant.DeleteSubscriber");

            /* Remove the ContentFilteredTopic. */
            status = realParticipant.DeleteContentFilteredTopic(
            filteredMessageTopic);
            ErrorHandler.checkStatus(
            status, "DDS.DomainParticipant.DeleteContentfilteredtopic");

            /* Remove all other topics. */
            status = realParticipant.DeleteTopic(namedMessageTopic);
            ErrorHandler.checkStatus(
            status, "DDS.DomainParticipant.DeleteTopic (namedMessageTopic)");
            status = realParticipant.DeleteTopic(nameServiceTopic);
            ErrorHandler.checkStatus(
            status, "DDS.DomainParticipant.DeleteTopic (nameServiceTopic)");
            status = realParticipant.DeleteTopic(chatMessageTopic);
            ErrorHandler.checkStatus(
            status, "DDS.DomainParticipant.DeleteTopic (chatMessageTopic)");

            return status;
        }
Example #2
0
        public IDataReader CreateDataReader(
                ITopicDescription topic, 
                DataReaderQos qos,
                IDataReaderListener listener, 
                StatusKind mask)
        {
            DataReader dataReader = null;

            if (topic != null)
            {
                SacsSuperClass superObj = (SacsSuperClass)topic;

                using (OpenSplice.CustomMarshalers.DataReaderQosMarshaler marshaler =
                        new OpenSplice.CustomMarshalers.DataReaderQosMarshaler())
                {
                    if (marshaler.CopyIn(qos) == ReturnCode.Ok)
                    {
                        if (listener != null)
                        {
                            OpenSplice.Gapi.gapi_dataReaderListener gapiListener;
                            DataReaderListenerHelper listenerHelper = new DataReaderListenerHelper();
                            listenerHelper.Listener = listener;
                            listenerHelper.CreateListener(out gapiListener);
                            using (DataReaderListenerMarshaler listenerMarshaler =
                                    new DataReaderListenerMarshaler(ref gapiListener))
                            {
                                IntPtr gapiPtr = Gapi.Subscriber.create_datareader(
                                        GapiPeer,
                                        superObj.GapiPeer,
                                        marshaler.GapiPtr,
                                        listenerMarshaler.GapiPtr,
                                        mask);
                                if (gapiPtr != IntPtr.Zero)
                                {
                                    TypeSupport typeSupport = topic.Participant.GetTypeSupport(topic.TypeName)
                                            as OpenSplice.TypeSupport;
                                    dataReader = typeSupport.CreateDataReader(gapiPtr);
                                    dataReader.SetListener(listenerHelper);
                                }
                            }
                        }
                        else
                        {
                            IntPtr gapiPtr = Gapi.Subscriber.create_datareader(
                                    GapiPeer,
                                    superObj.GapiPeer,
                                    marshaler.GapiPtr,
                                    IntPtr.Zero,
                                    mask);
                            if (gapiPtr != IntPtr.Zero)
                            {
                                TypeSupport typeSupport = topic.Participant.GetTypeSupport(topic.TypeName)
                                        as OpenSplice.TypeSupport;
                                dataReader = typeSupport.CreateDataReader(gapiPtr);
                            }
                        }
                    }
                }
            }

            if (dataReader != null)
            {
                SubscriberQos subQos = null;
                ReturnCode result = GetQos(ref subQos);
                if (result == ReturnCode.Ok)
                {
                    if (subQos.EntityFactory.AutoenableCreatedEntities)
                    {
                        dataReader.Enable();
                    }
                }
            }

            return dataReader;
        }
Example #3
0
 public IDataReader CreateDataReader(ITopicDescription topic, DataReaderQos qos)
 {
     return CreateDataReader(topic, qos, null, 0);
 }
Example #4
0
 public IDataReader CreateDataReader(ITopicDescription topic)
 {
     return CreateDataReader(topic, null, 0);
 }
Example #5
0
        public IDataReader CreateDataReader(
                ITopicDescription topic,
                IDataReaderListener listener, 
                StatusKind mask)
        {

            DataReader dataReader = null;

            if (topic != null)
            {
                SacsSuperClass superObj = (SacsSuperClass)topic;

                if (listener != null)
                {
                    OpenSplice.Gapi.gapi_dataReaderListener gapiListener;
                    DataReaderListenerHelper listenerHelper = new DataReaderListenerHelper();
                    listenerHelper.Listener = listener;
                    listenerHelper.CreateListener(out gapiListener);
                    using (DataReaderListenerMarshaler listenerMarshaler =
                            new DataReaderListenerMarshaler(ref gapiListener))
                    {
                        IntPtr gapiPtr = Gapi.Subscriber.create_datareader(
                                GapiPeer,
                                superObj.GapiPeer,
                                IntPtr.Zero,
                                listenerMarshaler.GapiPtr,
                                mask);
                        if (gapiPtr != IntPtr.Zero)
                        {
                            DDS.OpenSplice.DomainParticipant participantImpl;
                    
                            participantImpl = topic.Participant as DDS.OpenSplice.DomainParticipant;
                            TypeSupportFactory tsFactory = participantImpl.GetTypeSupportFactory(topic.TypeName);
                            dataReader = tsFactory.CreateDataReader(gapiPtr);
                            dataReader.SetListener(listenerHelper);
                        }
                    }
                }
                else
                {
                    IntPtr gapiPtr = Gapi.Subscriber.create_datareader(
                            GapiPeer,
                            superObj.GapiPeer,
                            IntPtr.Zero,
                            IntPtr.Zero,
                            StatusKind.Any);
                    if (gapiPtr != IntPtr.Zero)
                    {
                        DDS.OpenSplice.DomainParticipant participantImpl;
                    
                        participantImpl = topic.Participant as DDS.OpenSplice.DomainParticipant;
                        TypeSupportFactory tsFactory = participantImpl.GetTypeSupportFactory(topic.TypeName);
                        dataReader = tsFactory.CreateDataReader(gapiPtr);
                    }
                }
            }

            if (dataReader != null)
            {
                SubscriberQos subQos = null;
                ReturnCode result = GetQos(ref subQos);
                if (result == ReturnCode.Ok)
                {
                    if (subQos.EntityFactory.AutoenableCreatedEntities)
                    {
                        dataReader.Enable();
                    }
                }
            }       
                
            return dataReader;
        }
Example #6
0
 public IDataReader CreateDataReader(ITopicDescription topic, DataReaderQos qos)
 {
     return(CreateDataReader(topic, qos, null, 0));
 }