public ITopicDescription LookupTopicDescription(string name) { ITopicDescription topicDesc = null; IntPtr gapiPtr = Gapi.DomainParticipant.lookup_topicdescription( GapiPeer, name); if (gapiPtr != IntPtr.Zero) { // if the lookup fails, then we don't have a managed object for gapi object yet topicDesc = SacsSuperClass.fromUserData(gapiPtr) as ITopicDescription; if (topicDesc == null) { if (IsBuiltinTopic(name)) { topicDesc = BuiltinTopicCreateWrapper(name); } else { DDS.OpenSplice.OS.Report( DDS.OpenSplice.ReportType.OS_ERROR, "DDS.OpenSplice.DomainParticipant.LookupTopicDescription", "DDS/OpenSplice/DomainParticipant.cs", DDS.ErrorCode.EntityUnknown, "TopicDescription Entity has no C# wrapper."); } } } return(topicDesc); }
/// <summary> /// This operation returns the DataReader associated with the ReadCondition. /// </summary> /// <returns>The DataReader associated with the ReadCondition.</returns> public IDataReader GetDataReader() { IntPtr gapiPtr = Gapi.ReadCondition.get_datareader(GapiPeer); IDataReader dataReader = SacsSuperClass.fromUserData(gapiPtr) as IDataReader; return(dataReader); }
public ITopicDescription GetTopicDescription() { IntPtr gapiPtr = Gapi.DataReader.get_topicdescription(GapiPeer); ITopicDescription topicDesc = SacsSuperClass.fromUserData(gapiPtr) as ITopicDescription; return(topicDesc); }
public IDomainParticipant GetParticipant() { IntPtr gapiPtr = Gapi.Publisher.get_participant(GapiPeer); IDomainParticipant domainParticipant = SacsSuperClass.fromUserData(gapiPtr) as IDomainParticipant; return(domainParticipant); }
public IDataWriter LookupDataWriter(string topicName) { IntPtr gapiPtr = Gapi.Publisher.lookup_datawriter( GapiPeer, topicName); IDataWriter dataWriter = SacsSuperClass.fromUserData(gapiPtr) as IDataWriter; return(dataWriter); }
public IDataReader LookupDataReader(string topicName) { IntPtr gapiPtr = Gapi.Subscriber.lookup_datareader( GapiPeer, topicName); IDataReader dataReader = SacsSuperClass.fromUserData(gapiPtr) as IDataReader; return(dataReader); }
public ITypeSupport LookupTypeSupport(string registeredTypeName) { ITypeSupport typeSupport = null; IntPtr gapiPtr = Gapi.DomainParticipant.lookup_typesupport( GapiPeer, registeredTypeName); if (gapiPtr != IntPtr.Zero) { typeSupport = SacsSuperClass.fromUserData(gapiPtr) as ITypeSupport; } return(typeSupport); }
public ReturnCode GetDataReaders( ref IDataReader[] readers, SampleStateKind sampleStates, ViewStateKind viewStates, InstanceStateKind instanceStates) { ReturnCode result = DDS.ReturnCode.AlreadyDeleted; ReportStack.Start(); if (this.rlReq_isAlive) { IntPtr iterp = IntPtr.Zero; uint mask = DataReader.StateMask(sampleStates, viewStates, instanceStates); result = uResultToReturnCode(User.Subscriber.GetDataReaders(this.rlReq_UserPeer, mask, ref iterp)); if (result == ReturnCode.Ok) { int length = Database.c.iterLength(iterp); if (readers == null || readers.Length != length) { readers = new IDataReader[length]; } for (int i = 0; i < length; i++) { IntPtr ureader = Database.c.iterTakeFirst(iterp); readers [i] = SacsSuperClass.fromUserData(ureader) as IDataReader; } Database.c.iterFree(iterp); } } ReportStack.Flush(this, result != ReturnCode.Ok); return(result); }
internal void EventHandler(IntPtr EventPtr, IntPtr arg) { const uint topicTrigger = (uint)(V_EVENT.INCONSISTENT_TOPIC | V_EVENT.ALL_DATA_DISPOSED); const uint writerTrigger = (uint)(V_EVENT.OFFERED_DEADLINE_MISSED | V_EVENT.LIVELINESS_LOST | V_EVENT.OFFERED_INCOMPATIBLE_QOS | V_EVENT.PUBLICATION_MATCHED); const uint readerTrigger = (uint)(V_EVENT.SAMPLE_REJECTED | V_EVENT.LIVELINESS_CHANGED | V_EVENT.SAMPLE_LOST | V_EVENT.REQUESTED_DEADLINE_MISSED | V_EVENT.REQUESTED_INCOMPATIBLE_QOS | V_EVENT.SUBSCRIPTION_MATCHED); // The DATA_AVAILABLE and DATA_ON_READERS events are left out of the readerTrigger because // they don't have a v_readerStatus that has to be copied. Debug.Assert(EventPtr != IntPtr.Zero); v_listenerEvent listenerEvent = Marshal.PtrToStructure(EventPtr, listenerEventType) as v_listenerEvent; if (listenerEvent.kind == (uint)V_EVENT.TRIGGER) { // Nothing to deliver, so ignore. return; } ListenerEvent ev = new ListenerEvent(listenerEvent.kind); ev.Source = SacsSuperClass.fromUserData(listenerEvent.source) as Entity; if (ev.Source == null) { // Apparently the Source Entity has already been deleted. return; } if ((listenerEvent.kind & (uint)(V_EVENT.OBJECT_DESTROYED | V_EVENT.PREPARE_DELETE)) == 0) { ev.Target = SacsSuperClass.fromUserData(listenerEvent.userData) as Entity; if (listenerEvent.eventData != IntPtr.Zero) { if ((listenerEvent.kind & topicTrigger) != 0) { v_topicStatus vTopicStatus = (v_topicStatus)Marshal.PtrToStructure(listenerEvent.eventData, typeof(v_topicStatus)) as v_topicStatus; TopicStatus topicStatus = new TopicStatus(); vTopicStatusMarshaler.CopyOut(ref vTopicStatus, topicStatus); ev.Status = topicStatus; } else if ((listenerEvent.kind & writerTrigger) != 0) { v_writerStatus vWriterStatus = (v_writerStatus)Marshal.PtrToStructure(listenerEvent.eventData, typeof(v_writerStatus)) as v_writerStatus; WriterStatus writerStatus = new WriterStatus(); vWriterStatusMarshaler.CopyOut(ref vWriterStatus, writerStatus); ev.Status = writerStatus; } else if ((listenerEvent.kind & readerTrigger) != 0) { v_readerStatus vReaderStatus = (v_readerStatus)Marshal.PtrToStructure(listenerEvent.eventData, typeof(v_readerStatus)) as v_readerStatus; ReaderStatus readerStatus = new ReaderStatus(); vReaderStatusMarshaler.CopyOut(ref vReaderStatus, readerStatus); ev.Status = readerStatus; } else { v_status vStatus = (v_status)Marshal.PtrToStructure(listenerEvent.eventData, typeof(v_status)) as v_status; EntityStatus status = new EntityStatus(); vStatusMarshaler.CopyOut(ref vStatus, status); ev.Status = status; } } else { ev.Status = null; } } Events.Add(ev); }