示例#1
0
        public void NotifyClearMiddlewares(string destinationName)
        {
            if (DestinationName != destinationName)
            {
                return;
            }

            var oldCollectMiddleware = CollectMiddleware;

            CollectMiddleware = BuildInitialMiddlewarePipe(_collectMiddlewareName, Destination);
            DisposeMiddlewares(oldCollectMiddleware);
        }
示例#2
0
        private static void DisposeMiddlewares(ICollectMiddleware collectMiddleware)
        {
            var middleware = collectMiddleware.NextMiddleware;

            collectMiddleware.Dispose();

            do
            {
                middleware.Dispose();
                middleware = middleware.NextMiddleware;
            }while (middleware != null);
        }
示例#3
0
        public void NotifyCollectMiddlewareChanged(string destinationName, string middlewareName)
        {
            if (DestinationName != destinationName)
            {
                return;
            }

            _collectMiddlewareName = middlewareName;
            var oldCollectMiddleware = CollectMiddleware;

            CollectMiddleware = BuildInitialMiddlewarePipe(_collectMiddlewareName, Destination);
            CollectMiddleware.NextMiddleware = oldCollectMiddleware.NextMiddleware;

            oldCollectMiddleware.NextMiddleware = null;
            oldCollectMiddleware?.Dispose();
        }
示例#4
0
        public DestinationEntry(
            IDestination destination,
            string destinationName,
            string collectMiddlewareName,
            IEnumerable <string> middlewareNames)
        {
            Destination     = destination;
            DestinationName = destinationName;

            CollectMiddleware = BuildInitialMiddlewarePipe(collectMiddlewareName, destination);

            foreach (var name in middlewareNames)
            {
                NotifyMiddlewareAdded(DestinationName, name);
            }
        }