@Override
  public void getStatistics(StatisticsList list) {
    super.getStatistics(list);
    if (list.checkLevel(Level.FINEST)) {

      // Be careful here, the size() for this map is expensive to count
      list.add(getName(), "Bosh sessions", sessions.size(), Level.FINEST);
    }
  }
  @Override
  public void getStatistics(StatisticsList list) {
    super.getStatistics(list);
    list.add(getName(), "Open connections", services_size, Level.INFO);
    if (list.checkLevel(Level.FINEST) || (services.size() < 1000)) {
      int waitingToSendSize = 0;

      for (IO serv : services.values()) {
        waitingToSendSize += serv.waitingToSendSize();
      }
      list.add(getName(), "Waiting to send", waitingToSendSize, Level.FINE);
    }
    list.add(getName(), "Bytes sent", bytesSent, Level.FINE);
    list.add(getName(), "Bytes received", bytesReceived, Level.FINE);
    list.add(getName(), "Socket overflow", socketOverflow, Level.FINE);
    list.add(getName(), "Watchdog runs", watchdogRuns, Level.FINER);
    list.add(getName(), "Watchdog tests", watchdogTests, Level.FINE);
    list.add(getName(), "Watchdog stopped", watchdogStopped, Level.FINE);
  }