public void init() throws Exception { super.init(); timer=getTransport().getTimer(); up_msgs=new ArrayList<>(max_size); down_msgs=new ArrayList<>(max_size); }
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 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(); } }
public Object down(Message msg) { Protocol dn_prot=down_prot; if(dn_prot == null) return null; if(!down) return dn_prot.down(msg); add(down_msgs, msg, down_lock, dn_prot::down); return null; }
public void destroy() { super.destroy(); stopTask(); }
/** * Removes a random chosen message from the <code>messages List<\code> if there * are less than 10 messages in the List it waits some time to ensure to chose from * a set of messages > 1. */ public void run() { Message msg; while (messagesHandler != null) { if (!messages.isEmpty()) { msg = (Message) messages.remove(rnd(messages.size())); up_prot.up(new Event(Event.MSG,msg)); } if (messages.size() < 5) { try { Thread.sleep(300); /** @todo make this time user configurable */ } catch (Exception ex) { ex.printStackTrace(); } } }// while // PassUp remaining messages Iterator iter = messages.iterator(); while (iter.hasNext()) { msg = (Message) iter.next(); up_prot.up(new Event(Event.MSG,msg)); } }
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); }
public Object up(Message msg) { Protocol up_protocol=up_prot; if(up_protocol == null) return null; if(!up) return up_protocol.up(msg); add(up_msgs, msg, up_lock, m -> up_protocol.up(msg)); return null; }
public void stop() { super.stop(); stopTask(); }
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 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(); } }
public Object down(Message msg) { Protocol dn_prot=down_prot; if(dn_prot == null) return null; if(!down) return dn_prot.down(msg); add(down_msgs, msg, down_lock, dn_prot::down); return null; }
public void stop() { super.stop(); stopTask(); }
public void init() throws Exception { super.init(); timer=getTransport().getTimer(); up_msgs=new ArrayList<>(max_size); down_msgs=new ArrayList<>(max_size); }
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); }
public Object up(Message msg) { Protocol up_protocol=up_prot; if(up_protocol == null) return null; if(!up) return up_protocol.up(msg); add(up_msgs, msg, up_lock, m -> up_protocol.up(msg)); return null; }
public void destroy() { super.destroy(); stopTask(); }