예제 #1
0
 public Object poll(QueueInfo queue, long timeout) throws IOException, InterruptedException {
   readOnly = false;
   if (added != null) {
     List queueAdded = (List) added.get(queue);
     if (queueAdded != null) {
       return queueAdded.remove(queueAdded.size() - 1);
     }
   }
   Object o = queue.poll(Long.MAX_VALUE);
   if (o != null) {
     if (removed == null) {
       removed = new HashMap();
     }
     List queueRemoved = (List) removed.get(queue);
     if (queueRemoved == null) {
       queueRemoved = new ArrayList();
       removed.put(queue, queueRemoved);
     }
     queueRemoved.add(o);
     o = doLoad(queue, o);
   }
   return o;
 }