public ITopic FindTopic(string topicName, Duration timeout) { IntPtr gapiPtr = Gapi.DomainParticipant.find_topic( GapiPeer, topicName, ref timeout); ITopic topic = null; if (gapiPtr != IntPtr.Zero) { topic = new OpenSplice.Topic(gapiPtr); } return topic; }
public ITopic CreateTopic( string topicName, string typeName, ITopicListener listener, StatusKind mask) { ITopic topic = null; if (listener != null) { OpenSplice.Gapi.gapi_topicListener gapiListener; TopicListenerHelper listenerHelper = new TopicListenerHelper(); listenerHelper.Listener = listener; listenerHelper.CreateListener(out gapiListener); using (TopicListenerMarshaler listenerMarshaler = new TopicListenerMarshaler(ref gapiListener)) { IntPtr gapiPtr = Gapi.DomainParticipant.create_topic( GapiPeer, topicName, typeName, Gapi.NativeConstants.GapiTopicQosDefault, listenerMarshaler.GapiPtr, mask); if (gapiPtr != IntPtr.Zero) { topic = new Topic(gapiPtr, listenerHelper); } } } else { IntPtr gapiPtr = Gapi.DomainParticipant.create_topic( GapiPeer, topicName, typeName, Gapi.NativeConstants.GapiTopicQosDefault, IntPtr.Zero, mask); if (gapiPtr != IntPtr.Zero) { topic = new Topic(gapiPtr); } } if (topic != null) { DomainParticipantQos dpQos = null; ReturnCode result = GetQos(ref dpQos); if (result == ReturnCode.Ok) { if (dpQos.EntityFactory.AutoenableCreatedEntities) { topic.Enable(); } } } return topic; }
public ITopic CreateTopic( string topicName, string typeName, TopicQos qos, ITopicListener listener, StatusKind mask) { ITopic topic = null; using (OpenSplice.CustomMarshalers.TopicQosMarshaler marshaler = new OpenSplice.CustomMarshalers.TopicQosMarshaler()) { if (marshaler.CopyIn(qos) == ReturnCode.Ok) { if (listener != null) { OpenSplice.Gapi.gapi_topicListener gapiListener; TopicListenerHelper listenerHelper = new TopicListenerHelper(); listenerHelper.Listener = listener; listenerHelper.CreateListener(out gapiListener); using (TopicListenerMarshaler listenerMarshaler = new TopicListenerMarshaler(ref gapiListener)) { IntPtr gapiPtr = Gapi.DomainParticipant.create_topic( GapiPeer, topicName, typeName, marshaler.GapiPtr, listenerMarshaler.GapiPtr, mask); if (gapiPtr != IntPtr.Zero) { topic = new Topic(gapiPtr, listenerHelper); } } } else { // Invoke the corresponding gapi function. IntPtr gapiPtr = Gapi.DomainParticipant.create_topic( GapiPeer, topicName, typeName, marshaler.GapiPtr, IntPtr.Zero, mask); if (gapiPtr != IntPtr.Zero) { topic = new Topic(gapiPtr); } } } } if (topic != null) { DomainParticipantQos dpQos = null; ReturnCode result = GetQos(ref dpQos); if (result == ReturnCode.Ok) { if (dpQos.EntityFactory.AutoenableCreatedEntities) { topic.Enable(); } } } return topic; }
/** * Wrap the selected builtin topics in a C# object. */ internal Topic BuiltinTopicCreateWrapper(string biTopicName) { Topic wrapper = null; // Lookup the "DCPSParticipant" topic. IntPtr gapiPtr = Gapi.DomainParticipant.lookup_topicdescription( this.GapiPeer, biTopicName); if (gapiPtr == IntPtr.Zero) { string msg = string.Format("Failed to wrap builtin topic: {0}", biTopicName); DDS.OpenSplice.OS.Report( DDS.OpenSplice.ReportType.OS_ERROR, "DDS.OpenSplice.DomainParticipant.builtinTopicCreateWrapper", "DDS/OpenSplice/DomainParticipant.cs", DDS.ErrorCode.Error, msg); } else { // Wrap the gapi topic in a C# object. wrapper = new Topic(gapiPtr); } return wrapper; }