/// <summary> /// Specify a set of callbacks which may be invoked in response to certain /// conditions arising on the queue. /// </summary> /// <remarks> /// The behaviour here is middleware specific as not all will support all /// callbacks. /// <para> /// LBM: When the high watermark is exceeded the /// mamaQueueHighWatermarkExceededCb callback will invoked each time an event /// on the queue is dispatched until such time as the number of events on the /// queue falls below the high watermark.</para> /// <para>RV: Not currently supported.</para> /// </remarks> public void setQueueMonitorCallbacks(MamaQueueMonitorCallback callback, object closure) { EnsurePeerCreated(); mWatermarkCallbackForwarder = new WatermarkCallbackForwarder(this, callback, closure); mWatermarkShimCallbacks.mHighWatermarkExceededShimCallback = new WatermarkCallbackForwarder.HighWatermarkExceededCallback(mWatermarkCallbackForwarder.HighWatermarkExceeded); mWatermarkShimCallbacks.mLowWatermarkShimCallback = new WatermarkCallbackForwarder.LowWatermarkCallback(mWatermarkCallbackForwarder.LowWatermark); int code = NativeMethods.mamaQueue_setQueueMonitorCallbacks(nativeHandle, ref mWatermarkShimCallbacks, IntPtr.Zero); CheckResultCode(code); }
public WatermarkCallbackForwarder(MamaQueue sender, MamaQueueMonitorCallback callback, object closure) { mSender = sender; mCallback = callback; mClosure = closure; }