Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
	  /// <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);
		}
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
		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);
		}
Exemplo n.º 6
0
            public static extern int mamaMsg_iterateFields(IntPtr msg, 
				CallbackForwarder.MamaMessageIteratorDelegate callback,
				IntPtr dict,
				IntPtr closure);
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
            public static extern int mamaTransport_setTransportCallback(IntPtr transport,
				CallbackForwarder.TransportCallbackDelegate callback, 
				IntPtr closure);
Exemplo n.º 9
0
 /// <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);
 }
Exemplo n.º 10
0
			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);