/// <summary> /// Set the transport callback. It receives advisories when a transport /// disconnects or reconnects. Passing NULL removes the callback. /// </summary> /// <param name="callback"></param> public void setTransportCallback(MamaTransportCallback callback) { EnsurePeerCreated(); if (callback == null) { mCallbackForwarder = null; mCallback = null; } else { mCallbackForwarder = new CallbackForwarder(this, callback); mCallback = new CallbackForwarder.TransportCallbackDelegate(mCallbackForwarder.OnTransportCallback); } int code = NativeMethods.mamaTransport_setTransportCallback(nativeHandle, mCallback, nativeHandle); CheckResultCode(code); GC.KeepAlive(callback); }
/// <summary> /// Create a data dictionary from a subscription /// </summary> public void create( MamaQueue queue, MamaDictionaryCallback callback, MamaSource source, int retries, double timeout) { mCallbackForwarder = new CallbackForwarder(this, callback); IntPtr queuePtr = queue != null ? queue.NativeHandle : IntPtr.Zero; IntPtr sourcePtr = source != null ? source.NativeHandle : IntPtr.Zero; mCallbacks = mCallbackForwarder.getMsgCallbacks(); int code = NativeMethods.mama_createDictionary(ref nativeHandle, queuePtr, mCallbacks, sourcePtr, timeout, retries, nativeHandle); CheckResultCode(code); GC.KeepAlive(source); GC.KeepAlive(queue); }
protected void setupFtType( mamaFtType ftType, MamaQueue queue, MamaFtMemberCallback callback, MamaTransport transport, string groupName, uint weight, double heartbeatInterval, double timeoutInterval, object closure) { EnsurePeerCreated(); if (callback == null) { mCallbackForwarder = null; mCallback = null; } else { mCallbackForwarder = new CallbackForwarder(this, callback, closure); mCallback = new CallbackForwarder.FtMemberCallbackDelegate(mCallbackForwarder.OnFtStateChange); } IntPtr queueHandle = queue != null ? queue.NativeHandle : IntPtr.Zero; IntPtr transportHandle = transport != null ? transport.NativeHandle : IntPtr.Zero; int code = NativeMethods.mamaFtMember_setup( nativeHandle, mamaFtType.MAMA_FT_TYPE_MULTICAST, queueHandle, mCallback, transportHandle, groupName, weight, heartbeatInterval, timeoutInterval, null); CheckResultCode(code); }
public static extern int mamaMsg_iterateFields(IntPtr msg, CallbackForwarder.MamaMessageIteratorDelegate callback, IntPtr dict, IntPtr closure);
/// <summary> /// Invoke the specified callback for each field in the message. /// </summary> /// <param name="iterator"></param> /// <param name="dictionary"></param> /// <param name="closure"></param> public void iterateFields( MamaMsgFieldIterator iterator, MamaDictionary dictionary, object closure) { #if MAMA_WRAPPERS_CHECK_ARGUMENTS if (iterator == null) { throw new ArgumentNullException("iterator"); } #endif // MAMA_WRAPPERS_CHECK_ARGUMENTS EnsurePeerCreated(); IntPtr dictHandle = dictionary != null ? dictionary.NativeHandle : IntPtr.Zero; if (forwarder == null) { forwarder = new CallbackForwarder(this, iterator, closure); callback = new CallbackForwarder.MamaMessageIteratorDelegate(forwarder.OnField); GC.SuppressFinalize(forwarder); GC.SuppressFinalize(callback); } else { forwarder.mCallback = iterator; forwarder.mClosure = closure; } int code = NativeMethods.mamaMsg_iterateFields(nativeHandle, callback, dictHandle, nativeHandle); CheckResultCode(code); GC.KeepAlive(iterator); GC.KeepAlive(dictionary); }
public static extern int mamaTransport_setTransportCallback(IntPtr transport, CallbackForwarder.TransportCallbackDelegate callback, IntPtr closure);
public static extern int mamaFtMember_setup( IntPtr member, mamaFtType fttype, IntPtr eventQueue, CallbackForwarder.FtMemberCallbackDelegate callback, IntPtr transport, string groupName, uint weight, double heartbeatInterval, double timeoutInterval, object closure);