public ReturnCode SetQos(DataReaderQos qos) { ReturnCode result; using (OpenSplice.CustomMarshalers.DataReaderQosMarshaler marshaler = new OpenSplice.CustomMarshalers.DataReaderQosMarshaler()) { result = marshaler.CopyIn(qos); if (result == ReturnCode.Ok) { result = Gapi.DataReader.set_qos(GapiPeer, marshaler.GapiPtr); } } return result; }
public ReturnCode SetDefaultDataReaderQos(DataReaderQos qos) { DDS.ReturnCode result; using (OpenSplice.CustomMarshalers.DataReaderQosMarshaler marshaler = new OpenSplice.CustomMarshalers.DataReaderQosMarshaler()) { result = marshaler.CopyIn(qos); if (result == DDS.ReturnCode.Ok) { return OpenSplice.Gapi.Subscriber.set_default_datareader_qos( GapiPeer, marshaler.GapiPtr); } } return result; }
public ReturnCode CopyFromTopicQos(ref DataReaderQos dataReaderQos, TopicQos topicQos) { ReturnCode result = ReturnCode.Ok; if (dataReaderQos == null) { result = GetDefaultDataReaderQos(ref dataReaderQos); } if (result == ReturnCode.Ok) { using (OpenSplice.CustomMarshalers.TopicQosMarshaler marshaler = new OpenSplice.CustomMarshalers.TopicQosMarshaler()) { result = marshaler.CopyIn(topicQos); if (result == ReturnCode.Ok) { using (OpenSplice.CustomMarshalers.DataReaderQosMarshaler dataReaderMarshaler = new OpenSplice.CustomMarshalers.DataReaderQosMarshaler()) { result = dataReaderMarshaler.CopyIn(dataReaderQos); if (result == ReturnCode.Ok) { result = OpenSplice.Gapi.Subscriber.copy_from_topic_qos( GapiPeer, dataReaderMarshaler.GapiPtr, marshaler.GapiPtr); if (result == ReturnCode.Ok) { dataReaderMarshaler.CopyOut(ref dataReaderQos); } } } } } } return result; }
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; }