Exemplo n.º 1
0
        /// <summary>
        /// Starts subscribing to or unsubscribing from the specified event.
        /// </summary>
        /// <param name="action">Action to take regarding the event.</param>
        /// <param name="handler">Delegate that gets called when specified event happens or is
        /// to be removed.</param>
        public void SetEvent(IProcEventAction action, IProcEventHandler handler)
        {
            lock ( subscribeLock )
            {
                // Queue the event so that if the client is not connected to the server, the event
                // can be registered after the connection is made.
                eventActionQueue.Enqueue(new EventActionQueueItem(action, handler));

                // Only let through if connected.
                if (state == ClientState.Running)
                {
                    SubscribeEvent(action, handler);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Starts subscribing to or unsubscribing from the specified event.
        /// </summary>
        /// <param name="action">Action to take regarding the event.</param>
        /// <param name="handler">Delegate that gets called when specified event happens or is
        /// to be removed.</param>
        private void SubscribeEvent(IProcEventAction action, IProcEventHandler handler)
        {
            bool duplicateSubscriber = false;

            // Build the listener message.
            IProcEventListener message = new IProcEventListener();

            message.AddEvent(action);

            // Set the handler for the proper event type.
            switch (action)
            {
            case IProcEventAction.AddNodeCreated:
            {
                duplicateSubscriber = (onCreatedNodeEvent != null) ? true : false;
                onCreatedNodeEvent += handler;
                break;
            }

            case IProcEventAction.AddNodeDeleted:
            {
                duplicateSubscriber = (onDeletedNodeEvent != null) ? true : false;
                onDeletedNodeEvent += handler;
                break;
            }

            case IProcEventAction.AddNodeChanged:
            {
                duplicateSubscriber = (onChangedNodeEvent != null) ? true : false;
                onChangedNodeEvent += handler;
                break;
            }

            case IProcEventAction.AddCollectionSync:
            {
                duplicateSubscriber    = (onCollectionSyncEvent != null) ? true : false;
                onCollectionSyncEvent += handler;
                break;
            }

            case IProcEventAction.AddFileSync:
            {
                duplicateSubscriber = (onFileSyncEvent != null) ? true : false;
                onFileSyncEvent    += handler;
                break;
            }

            case IProcEventAction.AddNotifyMessage:
            {
                duplicateSubscriber = (onNotifyEvent != null) ? true : false;
                onNotifyEvent      += handler;
                break;
            }

            case IProcEventAction.RemoveNodeCreated:
            {
                onCreatedNodeEvent -= handler;
                duplicateSubscriber = (onCreatedNodeEvent != null) ? true : false;
                break;
            }

            case IProcEventAction.RemoveNodeDeleted:
            {
                onDeletedNodeEvent -= handler;
                duplicateSubscriber = (onDeletedNodeEvent != null) ? true : false;
                break;
            }

            case IProcEventAction.RemoveNodeChanged:
            {
                onChangedNodeEvent -= handler;
                duplicateSubscriber = (onChangedNodeEvent != null) ? true : false;
                break;
            }

            case IProcEventAction.RemoveCollectionSync:
            {
                onCollectionSyncEvent -= handler;
                duplicateSubscriber    = (onCollectionSyncEvent != null) ? true : false;
                break;
            }

            case IProcEventAction.RemoveFileSync:
            {
                onFileSyncEvent    -= handler;
                duplicateSubscriber = (onFileSyncEvent != null) ? true : false;
                break;
            }

            case IProcEventAction.RemoveNotifyMessage:
            {
                onNotifyEvent      -= handler;
                duplicateSubscriber = (onNotifyEvent != null) ? true : false;
                break;
            }
            }

            // Send the message if necessary.
            if (!duplicateSubscriber)
            {
                SendMessage(message.ToBuffer());
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the structure.
 /// </summary>
 /// <param name="action">Action to take regarding the event.</param>
 /// <param name="handler">Delegate that gets called when specified event happens or is
 /// to be removed.</param>
 public EventActionQueueItem(IProcEventAction action, IProcEventHandler handler)
 {
     this.action  = action;
     this.handler = handler;
 }
Exemplo n.º 4
0
        /// <summary>
        /// Callback used to indicate that an event has been indicated to the delegate.
        /// </summary>
        /// <param name="result">Results that contains the delegate.</param>
        private void EventCompleteCallback(IAsyncResult result)
        {
            IProcEventHandler eventDelegate = (result as AsyncResult).AsyncDelegate as IProcEventHandler;

            eventDelegate.EndInvoke(result);
        }