Esempio n. 1
0
        /// <summary>
        /// Method to unregister an interceptor
        /// </summary>
        /// <param name="direction">Defines if interceptor is for: publish or subscribe</param>
        /// <param name="registrationGuid">Goid which was returned from the register call</param>
        public static void UnRegister(InterceptDirection direction, Guid registrationGuid)
        {
            if (direction != InterceptDirection.Publish && direction != InterceptDirection.Subscribe)
            {
                return;
            }

            if (direction == InterceptDirection.Subscribe)
            {
                if (subscribeRegistrationGuid == registrationGuid)
                {
                    subscribeInterceptor      = null;
                    subscribeRegistrationGuid = Guid.Empty;
                }
            }
            else
            {
                if (publishRegistrationGuid == registrationGuid)
                {
                    publishInterceptor      = null;
                    publishRegistrationGuid = Guid.Empty;
                }
            }

            return;
        }
Esempio n. 2
0
        /// <summary>
        /// Method used to register an interceptor with Wsp. Only one interceptor is permitted.
        /// </summary>
        /// <param name="direction">Defines the direction the interceptor is registering for: publish or subscribe</param>
        /// <param name="interceptor">Delegate which Wsp will call for interception</param>
        /// <param name="onNextPrivate">Delegate to publish events which bypass interceptor logic</param>
        /// <returns>Guid needed to unregister</returns>
        public static Guid Register(InterceptDirection direction, InterceptorDelegate interceptor, out OnNextPrivate onNextPrivate)
        {
            WspEventPublish eventPublish = new WspEventPublish();

            onNextPrivate = eventPublish.OnNextPrivate;

            if (direction != InterceptDirection.Publish && direction != InterceptDirection.Subscribe)
            {
                onNextPrivate = null;

                return(Guid.Empty);
            }

            if (direction == InterceptDirection.Subscribe)
            {
                if (subscribeRegistrationGuid == Guid.Empty)
                {
                    subscribeInterceptor      = interceptor;
                    subscribeRegistrationGuid = Guid.NewGuid();

                    return(subscribeRegistrationGuid);
                }
                else
                {
                    onNextPrivate = null;

                    return(Guid.Empty);
                }
            }
            else
            {
                if (publishRegistrationGuid == Guid.Empty)
                {
                    publishInterceptor      = interceptor;
                    publishRegistrationGuid = Guid.NewGuid();

                    return(publishRegistrationGuid);
                }
                else
                {
                    onNextPrivate = null;

                    return(Guid.Empty);
                }
            }
        }