// WingsEmu // // Developed by NosWings Team using System; using System.Collections.Concurrent; using System.Linq; namespace WingsEmu.Core.Extensions; public static class ConcurrentBagExtensions { #region Methods public static ConcurrentBag Replace(this ConcurrentBag queue, Func predicate) => new(queue.ToList().Where(predicate)); public static void Clear(this ConcurrentBag queue) { while (!queue.IsEmpty) { queue.TryTake(out T _); } } public static void RemoveWhere(this ConcurrentBag queue, Func predicate, out ConcurrentBag queueReturned) { queueReturned = new ConcurrentBag(queue.Where(predicate)); } private static Func Not(this Func predicate) { return value => !predicate(value); } #endregion }