public void NotifyClearMiddlewares(string destinationName) { if (DestinationName != destinationName) { return; } var oldCollectMiddleware = CollectMiddleware; CollectMiddleware = BuildInitialMiddlewarePipe(_collectMiddlewareName, Destination); DisposeMiddlewares(oldCollectMiddleware); }
private static void DisposeMiddlewares(ICollectMiddleware collectMiddleware) { var middleware = collectMiddleware.NextMiddleware; collectMiddleware.Dispose(); do { middleware.Dispose(); middleware = middleware.NextMiddleware; }while (middleware != null); }
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(); }
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); } }