/**
   * A utility method for {@link RoutingRuntime RoutingRuntime} users. Confirm whether the target is
   * alive or not by sending a PING message.
   */
  public boolean ping(MessageSender sender, IDAddressPair target) throws IOException {
    Message ret = sender.sendAndReceive(target.getAddress(), new PingMessage());

    if (!(ret instanceof AckMessage)) {
      logger.log(Level.WARNING, "Received message should be ACK, but it is: " + ret.getName());

      return false;
    }

    this.algorithm.touch(target);

    return true;
  }