@Override
  public String toString() {
    String msgName;

    msgName =
        _requestMessage != null ? _requestMessage.getClass().getName() : "'" + _requestString + "'";

    return this.getClass().getSimpleName() + "[" + _cp.getCellName() + ", " + msgName + "]";
  }
  @Override
  public void messageArrived(CellMessage msg) {
    Object obj = msg.getMessageObject();
    _requests++;
    if (obj instanceof PoolFlushGainControlMessage) {

      poolFlushGainControlMessageArrived((PoolFlushGainControlMessage) obj);

    } else if (obj instanceof PoolFlushDoFlushMessage) {

      poolFlushDoFlushMessageArrived((PoolFlushDoFlushMessage) obj);

    } else if (obj instanceof PoolManagerPoolModeMessage) {

      poolModeInfoArrived((PoolManagerPoolModeMessage) obj);

    } else if (obj instanceof PoolStatusChangedMessage) {

      poolStatusChanged((PoolStatusChangedMessage) obj);

    } else if (obj instanceof NoRouteToCellException) {

      NoRouteToCellException nrtc = (NoRouteToCellException) obj;
      CellPath path = nrtc.getDestinationPath();
      CellAddressCore core = path.getDestinationAddress();
      String cellName = core.getCellName();
      _log.warn("NoRouteToCell : " + cellName + " (" + path + ")");

      poolFlushGainControlMessageDidntArrive(cellName);

    } else {
      _log.warn(
          "Unknown message arrived (" + msg.getSourcePath() + ") : " + msg.getMessageObject());
      _failed++;
    }
  }