/// <summary> /// Adds a listener /// </summary> /// <param name="target">Target output device</param> /// <param name="options">Filtration options</param> /// <param name="filterItems">Keywords to filter out (or include)</param> public void AddListener(IConsoleOutput target, RouterOptions options, IEnumerable <string> filterItems) { if (TargetsInternal.Where(i => i.Target == target).Count() > 0) { throw new ArgumentException(nameof(target), "This " + nameof(IConsoleOutput) + " is allready registered"); } if (!options.HasFlag(RouterOptions.ReceivesErrors) && !options.HasFlag(RouterOptions.ReceivesWarnings) && !options.HasFlag(RouterOptions.ReceivesMessages)) { throw new ArgumentException(nameof(options), "This listener has no target streams"); } TargetsInternal.Add(new RouterItem() { Target = target, Options = options, ExcludedKeywords = filterItems.ToArray() }); }
/// <summary> /// Writes a message to all listeners that has the option flag ReceiveMessages /// </summary> /// <param name="message">Message to write</param> public void WriteLine(string message) { TargetsInternal.ForEach(i => i.WriteLine(message)); }
/// <summary> /// Clears the buffers of all listeners that has the option flag CanClear /// </summary> public void ClearBuffer() { TargetsInternal.ForEach(i => i.ClearBuffer()); }
/// <summary> /// Removes a listener /// </summary> /// <param name="target">Listener to remove</param> /// <returns></returns> public bool RemoveListener(IConsoleOutput target) { return(TargetsInternal.RemoveAll(i => i.Target == target) != 0); }
/// <summary> /// Writes an warning message to all listeners that has the option flag ReceiveWarnings /// </summary> /// <param name="message">Message to write</param> public void WriteWarning(string message) { TargetsInternal.ForEach(i => i.WriteWarning(message)); }