@Override
  public void run() {

    while (running) {
      try {
        MasterNodeEvent nodeEvent = tunnel.getMasterSide().poll(1, TimeUnit.SECONDS);

        if (nodeEvent != null) {
          if (nodeEvent.getEventCode().equals(MasterEventCode.GET_TASK)
              || nodeEvent.getEventCode().equals(MasterEventCode.SEND_RESULT)) {
            masterNode.addEvent(nodeEvent);
          }
        }

      } catch (InterruptedException e) {
        // do nothing
      } catch (Exception ex) {
        logger.error(ex, ex);
      }
    }
  }
 @Override
 public void echoSendMonitorInfo(SendMonitorInfoResponseEvent event) {
   tunnel.getSlaveSide().offer(event);
 }
 @Override
 public void echoSendJobTaskResults(SendResultsResponseEvent event) {
   tunnel.getSlaveSide().offer(event);
 }
 @Override
 public void echoGetJobTasks(GetTaskResponseEvent event) {
   tunnel.getSlaveSide().offer(event);
 }