@Override public boolean offer(Processor<S> processor) { int cacheSize = handler.getProtocol().getProcessorCache(); boolean offer = cacheSize == -1 ? true : size.get() < cacheSize; // avoid over growing our cache or add after we have stopped boolean result = false; if (offer) { result = super.offer(processor); if (result) { size.incrementAndGet(); } } if (!result) handler.unregister(processor); return result; }
@Override public void clear() { Processor<S> next = poll(); while (next != null) { handler.unregister(next); next = poll(); } super.clear(); size.set(0); }