Beispiel #1
0
        /// <summary>
        /// Sets the specified filters for the subscriber.
        /// </summary>
        /// <param name="filters">An array of EventFilter objects.</param>
        private void SubscribeFilter(IProcEventFilter[] filters)
        {
            IProcEventListener message = new IProcEventListener();

            foreach (IProcEventFilter filter in filters)
            {
                message.AddFilter(filter);
            }

            // Send the message.
            SendMessage(message.ToBuffer());
        }
Beispiel #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());
            }
        }