internal void ReleaseLogBuffers(LogBuffers logBuffers, long registrationId) { if (logBuffers.DecRef() == 0) { logBuffers.LingerDeadlineNs(_nanoClock.NanoTime() + _ctx.ResourceLingerDurationNs()); _logBuffersByIdMap.Remove(registrationId); _lingeringLogBuffers.Add(logBuffers); } }
private int CheckLingeringResources(long nowNs) { int workCount = 0; for (int lastIndex = _lingeringLogBuffers.Count - 1, i = lastIndex; i >= 0; i--) { LogBuffers logBuffers = _lingeringLogBuffers[i]; if (logBuffers.LingerDeadlineNs() - nowNs < 0) { ListUtil.FastUnorderedRemove(_lingeringLogBuffers, i, lastIndex--); CloseHelper.Dispose(_ctx.ErrorHandler(), logBuffers); workCount += 1; } } return(workCount); }