/** We're guaranteed that only one thread will be called with this method at any time */ protected void process(Collection<R> requests) { for(;;) { while(!requests.isEmpty()) { removeAndProcess(requests); // remove matching requests and process them } lock.lock(); try { if(requests.isEmpty()) { setProcessing(false); return; } } finally { lock.unlock(); } } }
protected boolean _add(Collection<R> reqs) { if(reqs == null || reqs.isEmpty() || suspended.get()) { log().trace("%s: queue is suspended; requests are discarded", gms.getLocalAddress()); return false; } count.incrementAndGet(); lock.lock(); try { for(R req: reqs) { if(!requests.contains(req)) { requests.add(req); history.add(new Date() + ": " + req.toString()); } } return count.decrementAndGet() == 0 && !processing && setProcessing(true); } finally { lock.unlock(); } }
protected boolean _add(R req) { if(req == null || suspended.get()) { log().trace("%s: queue is suspended; request %s is discarded", gms.getLocalAddress(), req); return false; } String log=new Date() + ": " + req.toString(); count.incrementAndGet(); lock.lock(); try { if(!requests.contains(req)) { requests.add(req); history.add(log); } return count.decrementAndGet() == 0 && !processing && setProcessing(true); } finally { lock.unlock(); } }
@SuppressWarnings("unchecked") protected boolean _add(R ... reqs) { if(reqs == null || reqs.length == 0 || suspended.get()) { log().trace("%s: queue is suspended; requests are discarded", gms.getLocalAddress()); return false; } count.incrementAndGet(); lock.lock(); try { for(R req: reqs) { if(!requests.contains(req)) { requests.add(req); history.add(new Date() + ": " + req.toString()); } } return count.decrementAndGet() == 0 && !processing && setProcessing(true); } finally { lock.unlock(); } }
/** We're guaranteed that only one thread will be called with this method at any time */ protected void process(Collection<R> requests) { for(;;) { while(!requests.isEmpty()) { removeAndProcess(requests); // remove matching requests and process them } lock.lock(); try { if(requests.isEmpty()) { setProcessing(false); return; } } finally { lock.unlock(); } } }
protected boolean _add(R req) { if(req == null || suspended.get()) { log().trace("%s: queue is suspended; request %s is discarded", gms.getLocalAddress(), req); return false; } String log=new Date() + ": " + req.toString(); count.incrementAndGet(); lock.lock(); try { if(!requests.contains(req)) { requests.add(req); history.add(log); } return count.decrementAndGet() == 0 && !processing && setProcessing(true); } finally { lock.unlock(); } }
protected boolean _add(Collection<R> reqs) { if(reqs == null || reqs.isEmpty() || suspended.get()) { log().trace("%s: queue is suspended; requests are discarded", gms.getLocalAddress()); return false; } count.incrementAndGet(); lock.lock(); try { for(R req: reqs) { if(!requests.contains(req)) { requests.add(req); history.add(new Date() + ": " + req.toString()); } } return count.decrementAndGet() == 0 && !processing && setProcessing(true); } finally { lock.unlock(); } }
@SuppressWarnings("unchecked") protected boolean _add(R ... reqs) { if(reqs == null || reqs.length == 0 || suspended.get()) { log().trace("%s: queue is suspended; requests are discarded", gms.getLocalAddress()); return false; } count.incrementAndGet(); lock.lock(); try { for(R req: reqs) { if(!requests.contains(req)) { requests.add(req); history.add(new Date() + ": " + req.toString()); } } return count.decrementAndGet() == 0 && !processing && setProcessing(true); } finally { lock.unlock(); } }