internal byte[] GetLargeBuffer(int requiredSize) { byte[] array; requiredSize = RoundToLargeBufferMultiple(requiredSize); var num = requiredSize / largeBufferMultiple - 1; if (num < largePools.Length) { if (!largePools[num].TryPop(out array)) { array = new byte[requiredSize]; LargeBufferCreated?.Invoke(); } else { Interlocked.Add(ref largeBufferFreeSize[num], -array.Length); } } else { num = largeBufferInUseSize.Length - 1; array = new byte[requiredSize]; LargeBufferCreated?.Invoke(); } Interlocked.Add(ref largeBufferInUseSize[num], array.Length); return(array); }
internal void ReportLargeBufferCreated() { Counter.ReportLargeBufferCreated(); LargeBufferCreated?.Invoke(); }
internal void ReportLargeBufferCreated() => LargeBufferCreated?.Invoke();