コード例 #1
0
 internal void ReleaseLogBuffers(LogBuffers logBuffers, long registrationId)
 {
     if (logBuffers.DecRef() == 0)
     {
         logBuffers.LingerDeadlineNs(_nanoClock.NanoTime() + _ctx.ResourceLingerDurationNs());
         _logBuffersByIdMap.Remove(registrationId);
         _lingeringLogBuffers.Add(logBuffers);
     }
 }
コード例 #2
0
        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);
        }