@Override
 public void sendKey(byte[] o, int key) {
   int opId = router.route(key);
   OutputBuffer ob = outputBuffers.get(opId);
   boolean complete = ob.write(o);
   if (complete) {
     eAPI.readyForWrite(ob.id());
   }
 }
 @Override
 public void send(byte[] o) {
   OutputBuffer outB = ob;
   if (SINGLE_SEND_NOT_DEFINED) {
     int opId = this.router.route();
     outB = outputBuffers.get(opId);
   }
   boolean completed = outB.write(o);
   if (completed) {
     eAPI.readyForWrite(outB.id());
   }
 }
 @Override
 public void sendAll(byte[] o) {
   List<Integer> ids = new ArrayList<>();
   for (OutputBuffer ob : outputBuffers.values()) {
     boolean completed = ob.write(o);
     if (completed) {
       ids.add(ob.id());
     }
   }
   if (ids.size() > 0) {
     eAPI.readyForWrite(ids);
   }
 }