@Override protected <C extends Coalescable> void coalesceInternal(BlockingQueue<C> input, List<C> out, int maxItems) throws InterruptedException { if (input.drainTo(out, maxItems) == 0) { out.add(input.take()); input.drainTo(out, maxItems - out.size()); } long average = notifyOfSample(out.get(0).timestampNanos()); debugGap(average); if (maybeSleep(out.size(), average, maxCoalesceWindow, parker)) { input.drainTo(out, maxItems - out.size()); } for (int ii = 1; ii < out.size(); ii++) notifyOfSample(out.get(ii).timestampNanos()); }
@Override protected <C extends Coalescable> void coalesceInternal(BlockingQueue<C> input, List<C> out, int maxItems) throws InterruptedException { if (input.drainTo(out, maxItems) == 0) { out.add(input.take()); input.drainTo(out, maxItems - out.size()); } long average = notifyOfSample(out.get(0).timestampNanos()); debugGap(average); if (maybeSleep(out.size(), average, maxCoalesceWindow, parker)) { input.drainTo(out, maxItems - out.size()); } for (int ii = 1; ii < out.size(); ii++) notifyOfSample(out.get(ii).timestampNanos()); }
@Override protected <C extends Coalescable> void coalesceInternal(BlockingQueue<C> input, List<C> out, int maxItems) throws InterruptedException { if (input.drainTo(out, maxItems) == 0) { out.add(input.take()); } long average = notifyOfSample(out.get(0).timestampNanos()); debugGap(average); maybeSleep(out.size(), average, maxCoalesceWindow, parker); input.drainTo(out, maxItems - out.size()); for (int ii = 1; ii < out.size(); ii++) notifyOfSample(out.get(ii).timestampNanos()); }
@Override protected <C extends Coalescable> void coalesceInternal(BlockingQueue<C> input, List<C> out, int maxItems) throws InterruptedException { if (input.drainTo(out, maxItems) == 0) { out.add(input.take()); input.drainTo(out, maxItems - out.size()); } long average = notifyOfSample(out.get(0).timestampNanos()); debugGap(average); if (maybeSleep(out.size(), average, maxCoalesceWindow, parker)) { input.drainTo(out, maxItems - out.size()); } for (int ii = 1; ii < out.size(); ii++) notifyOfSample(out.get(ii).timestampNanos()); }