protected SHUFFLE add(List<Message> queue, MessageBatch batch, Lock lock, Consumer<Message> send_function) { lock.lock(); try { for(Message msg: batch) queue.add(msg); // queue can become a bit larger as a result of adding the entire batch if(queue.size() >= max_size) reorderAndSend(queue, lock, send_function); // clears queue return this; } finally { lock.unlock(); } }
protected SHUFFLE add(List<Message> queue, Message msg, Lock lock, Consumer<Message> send_function) { lock.lock(); try { queue.add(msg); if(queue.size() >= max_size) reorderAndSend(queue, lock, send_function); // clears queue else startTask(); return this; } finally { lock.unlock(); } }
protected synchronized void startTask() { if(task == null || task.isDone() || task.isCancelled()) task=timer.schedule(() -> { reorderAndSend(up_msgs, up_lock, msg -> up_prot.up(msg)); reorderAndSend(down_msgs, down_lock, msg -> down_prot.down(msg)); }, max_time, TimeUnit.MILLISECONDS); }
protected SHUFFLE add(List<Message> queue, MessageBatch batch, Lock lock, Consumer<Message> send_function) { lock.lock(); try { for(Message msg: batch) queue.add(msg); // queue can become a bit larger as a result of adding the entire batch if(queue.size() >= max_size) reorderAndSend(queue, lock, send_function); // clears queue return this; } finally { lock.unlock(); } }
protected SHUFFLE add(List<Message> queue, Message msg, Lock lock, Consumer<Message> send_function) { lock.lock(); try { queue.add(msg); if(queue.size() >= max_size) reorderAndSend(queue, lock, send_function); // clears queue else startTask(); return this; } finally { lock.unlock(); } }
protected synchronized void startTask() { if(task == null || task.isDone() || task.isCancelled()) task=timer.schedule(() -> { reorderAndSend(up_msgs, up_lock, msg -> up_prot.up(msg)); reorderAndSend(down_msgs, down_lock, msg -> down_prot.down(msg)); }, max_time, TimeUnit.MILLISECONDS); }