public ISubscriber CreateSubscriber(SubscriberQos qos, ISubscriberListener listener, StatusKind mask) { ISubscriber subscriber = null; using (OpenSplice.CustomMarshalers.SubscriberQosMarshaler marshaler = new OpenSplice.CustomMarshalers.SubscriberQosMarshaler()) { if (marshaler.CopyIn(qos) == ReturnCode.Ok) { if (listener != null) { OpenSplice.Gapi.gapi_subscriberListener gapiListener; SubscriberListenerHelper listenerHelper = new SubscriberListenerHelper(); listenerHelper.Listener = listener; listenerHelper.CreateListener(out gapiListener); using (SubscriberListenerMarshaler listenerMarshaler = new SubscriberListenerMarshaler(ref gapiListener)) { IntPtr gapiPtr = Gapi.DomainParticipant.create_subscriber( GapiPeer, marshaler.GapiPtr, listenerMarshaler.GapiPtr, mask); if (gapiPtr != IntPtr.Zero) { subscriber = new Subscriber(gapiPtr, listenerHelper); } } } else { // Invoke the corresponding gapi function. IntPtr gapiPtr = Gapi.DomainParticipant.create_subscriber( GapiPeer, marshaler.GapiPtr, IntPtr.Zero, mask); if (gapiPtr != IntPtr.Zero) { subscriber = new Subscriber(gapiPtr); } } } } if (subscriber != null) { DomainParticipantQos dpQos = null; ReturnCode result = GetQos(ref dpQos); if (result == ReturnCode.Ok) { if (dpQos.EntityFactory.AutoenableCreatedEntities) { subscriber.Enable(); } } } return(subscriber); }
internal override ReturnCode wlReq_deinit() { ReturnCode result = DDS.ReturnCode.Ok; if (readerList.Count == 0) { ISubscriberListener subListener = listener as ISubscriberListener; if (subListener != null) { this.SetListener(subListener, (DDS.StatusKind) 0); } this.DisableCallbacks(); result = base.wlReq_deinit(); if (result == DDS.ReturnCode.Ok) { this.participant = null; } } else { result = DDS.ReturnCode.PreconditionNotMet; ReportStack.Report(result, "Subscriber " + this + " cannot be deleted since it still contains " + readerList.Count + " DataReaders."); } return(result); }
internal override void NotifyListener(Entity source, V_EVENT triggerMask, DDS.OpenSplice.Common.EntityStatus status) { ReturnCode result; ISubscriberListener subListener = listener as ISubscriberListener; if (subListener != null) { DDS.OpenSplice.Common.ReaderStatus readerStatus = status as DDS.OpenSplice.Common.ReaderStatus; if ((triggerMask & V_EVENT.ON_DATA_ON_READERS) == V_EVENT.ON_DATA_ON_READERS) { result = ResetDataAvailableStatus(); if (result == DDS.ReturnCode.Ok) { subListener.OnDataOnReaders(source as ISubscriber); } } else { if ((triggerMask & V_EVENT.DATA_AVAILABLE) == V_EVENT.DATA_AVAILABLE) { result = ResetDataAvailableStatus(); if (result == DDS.ReturnCode.Ok) { subListener.OnDataAvailable(source as IDataReader); } } } if ((triggerMask & V_EVENT.SAMPLE_REJECTED) == V_EVENT.SAMPLE_REJECTED) { subListener.OnSampleRejected(source as IDataReader, readerStatus.SampleRejected); } if ((triggerMask & V_EVENT.LIVELINESS_CHANGED) == V_EVENT.LIVELINESS_CHANGED) { subListener.OnLivelinessChanged(source as IDataReader, readerStatus.LivelinessChanged); } if ((triggerMask & V_EVENT.SAMPLE_LOST) == V_EVENT.SAMPLE_LOST) { subListener.OnSampleLost(source as IDataReader, readerStatus.SampleLost); } if ((triggerMask & V_EVENT.REQUESTED_DEADLINE_MISSED) == V_EVENT.REQUESTED_DEADLINE_MISSED) { subListener.OnRequestedDeadlineMissed(source as IDataReader, readerStatus.DeadlineMissed); } if ((triggerMask & V_EVENT.REQUESTED_INCOMPATIBLE_QOS) == V_EVENT.REQUESTED_INCOMPATIBLE_QOS) { subListener.OnRequestedIncompatibleQos(source as IDataReader, readerStatus.IncompatibleQos); } if ((triggerMask & V_EVENT.SUBSCRIPTION_MATCHED) == V_EVENT.SUBSCRIPTION_MATCHED) { subListener.OnSubscriptionMatched(source as IDataReader, readerStatus.SubscriptionMatch); } } }
public ReturnCode SetListener(ISubscriberListener listener, StatusKind mask) { ReturnCode result = ReturnCode.Error; if (listener != null) { Gapi.gapi_subscriberListener gapiListener; listenerHelper.Listener = listener; listenerHelper.CreateListener(out gapiListener); lock (listener) { using (SubscriberListenerMarshaler marshaler = new SubscriberListenerMarshaler(ref gapiListener)) { result = Gapi.Subscriber.set_listener( GapiPeer, marshaler.GapiPtr, mask); } } } else { result = Gapi.Subscriber.set_listener( GapiPeer, IntPtr.Zero, mask); } return(result); }
public ReturnCode SetListener(ISubscriberListener listener, StatusKind mask) { ReturnCode result = ReturnCode.Error; if (listener != null) { Gapi.gapi_subscriberListener gapiListener; listenerHelper.Listener = listener; listenerHelper.CreateListener(out gapiListener); lock (listener) { using (SubscriberListenerMarshaler marshaler = new SubscriberListenerMarshaler(ref gapiListener)) { result = Gapi.Subscriber.set_listener( GapiPeer, marshaler.GapiPtr, mask); } } } else { result = Gapi.Subscriber.set_listener( GapiPeer, IntPtr.Zero, mask); } return result; }
internal void CreateListener(out OpenSplice.Gapi.gapi_subscriberListener listener) { onDataOnReadersDelegate = PrivateDataOnReaders; listener = new DDS.OpenSplice.Gapi.gapi_subscriberListener(); base.CreateListener(out listener.dataReader); listener.on_data_on_readers = onDataOnReadersDelegate; }
public ISubscriber CreateSubscriber(ISubscriberListener listener, StatusKind mask) { ISubscriber subscriber = null; if (listener != null) { OpenSplice.Gapi.gapi_subscriberListener gapiListener; SubscriberListenerHelper listenerHelper = new SubscriberListenerHelper(); listenerHelper.Listener = listener; listenerHelper.CreateListener(out gapiListener); using (SubscriberListenerMarshaler listenerMarshaler = new SubscriberListenerMarshaler(ref gapiListener)) { IntPtr gapiPtr = Gapi.DomainParticipant.create_subscriber( GapiPeer, Gapi.NativeConstants.GapiSubscriberQosDefault, listenerMarshaler.GapiPtr, mask); if (gapiPtr != IntPtr.Zero) { subscriber = new Subscriber(gapiPtr, listenerHelper); } } } else { IntPtr gapiPtr = Gapi.DomainParticipant.create_subscriber( GapiPeer, Gapi.NativeConstants.GapiSubscriberQosDefault, IntPtr.Zero, mask); if (gapiPtr != IntPtr.Zero) { subscriber = new Subscriber(gapiPtr); } } if (subscriber != null) { DomainParticipantQos dpQos = null; ReturnCode result = GetQos(ref dpQos); if (result == ReturnCode.Ok) { if (dpQos.EntityFactory.AutoenableCreatedEntities) { subscriber.Enable(); } } } return(subscriber); }
public ReturnCode SetListener(ISubscriberListener listener, StatusKind mask) { ReturnCode result = DDS.ReturnCode.AlreadyDeleted; ReportStack.Start(); lock (this) { if (this.rlReq_isAlive) { result = wlReq_SetListener(listener, mask); } } ReportStack.Flush(this, result != ReturnCode.Ok); return(result); }
public ISubscriber CreateSubscriber(SubscriberQos qos, ISubscriberListener listener, StatusKind mask) { return(realParticipant.CreateSubscriber(qos, listener, mask)); }
public ISubscriber CreateSubscriber(SubscriberQos qos, ISubscriberListener listener, StatusKind mask) { return realParticipant.CreateSubscriber(qos, listener, mask); }
public ISubscriber CreateSubscriber(SubscriberQos qos, ISubscriberListener listener, StatusKind mask) { ISubscriber subscriber = null; using (OpenSplice.CustomMarshalers.SubscriberQosMarshaler marshaler = new OpenSplice.CustomMarshalers.SubscriberQosMarshaler()) { if (marshaler.CopyIn(qos) == ReturnCode.Ok) { if (listener != null) { OpenSplice.Gapi.gapi_subscriberListener gapiListener; SubscriberListenerHelper listenerHelper = new SubscriberListenerHelper(); listenerHelper.Listener = listener; listenerHelper.CreateListener(out gapiListener); using (SubscriberListenerMarshaler listenerMarshaler = new SubscriberListenerMarshaler(ref gapiListener)) { IntPtr gapiPtr = Gapi.DomainParticipant.create_subscriber( GapiPeer, marshaler.GapiPtr, listenerMarshaler.GapiPtr, mask); if (gapiPtr != IntPtr.Zero) { subscriber = new Subscriber(gapiPtr, listenerHelper); } } } else { // Invoke the corresponding gapi function. IntPtr gapiPtr = Gapi.DomainParticipant.create_subscriber( GapiPeer, marshaler.GapiPtr, IntPtr.Zero, mask); if (gapiPtr != IntPtr.Zero) { subscriber = new Subscriber(gapiPtr); } } } } if (subscriber != null) { DomainParticipantQos dpQos = null; ReturnCode result = GetQos(ref dpQos); if (result == ReturnCode.Ok) { if (dpQos.EntityFactory.AutoenableCreatedEntities) { subscriber.Enable(); } } } return subscriber; }
public ISubscriber CreateSubscriber(ISubscriberListener listener, StatusKind mask) { ISubscriber subscriber = null; if (listener != null) { OpenSplice.Gapi.gapi_subscriberListener gapiListener; SubscriberListenerHelper listenerHelper = new SubscriberListenerHelper(); listenerHelper.Listener = listener; listenerHelper.CreateListener(out gapiListener); using (SubscriberListenerMarshaler listenerMarshaler = new SubscriberListenerMarshaler(ref gapiListener)) { IntPtr gapiPtr = Gapi.DomainParticipant.create_subscriber( GapiPeer, Gapi.NativeConstants.GapiSubscriberQosDefault, listenerMarshaler.GapiPtr, mask); if (gapiPtr != IntPtr.Zero) { subscriber = new Subscriber(gapiPtr, listenerHelper); } } } else { IntPtr gapiPtr = Gapi.DomainParticipant.create_subscriber( GapiPeer, Gapi.NativeConstants.GapiSubscriberQosDefault, IntPtr.Zero, mask); if (gapiPtr != IntPtr.Zero) { subscriber = new Subscriber(gapiPtr); } } if (subscriber != null) { DomainParticipantQos dpQos = null; ReturnCode result = GetQos(ref dpQos); if (result == ReturnCode.Ok) { if (dpQos.EntityFactory.AutoenableCreatedEntities) { subscriber.Enable(); } } } return subscriber; }