/// <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); }
public CallbackForwarder(MamaTransport target, MamaTransportCallback callback) { this.mTarget = target; this.mCallback = callback; }