/// <summary> /// This method adds a rewrite rule to the channel. /// </summary> /// <param name="rule">The rule.</param> /// <returns>Returns true if the rule has been added.</returns> public bool RedirectAdd(MessageRedirectRule rule) { bool success = mRedirectRules.TryAdd(rule.Id, rule); if (success) { mRedirectCache.Clear(); } return(success); }
/// <summary> /// This method attaches a rewrite rule to the channel pipeline. /// </summary> /// <typeparam name="C">The channel pipeline type.</typeparam> /// <param name="cpipe">The incoming pipeline.</param> /// <param name="rewriteRule">The rewrite rule.</param> /// <returns>Returns the original pipeline.</returns> public static C AttachMessageRedirectRule <C>(this C cpipe, MessageRedirectRule rewriteRule) where C : IPipelineChannel <IPipeline> { if (cpipe is IPipelineChannelBroadcast) { cpipe.ToChannel(ChannelDirection.Incoming).RedirectAdd(rewriteRule); cpipe.ToChannel(ChannelDirection.Outgoing).RedirectAdd(rewriteRule); } else { cpipe.Channel.RedirectAdd(rewriteRule); } return(cpipe); }