public IncomingSpeedCheckConnection(GlobalManagerStats stats, NetworkConnection conn) {
      this.startTime = System.currentTimeMillis();
      this.connection = conn;
      this.stats = stats;
      /*
       * register for notifications about incoming messages
       */
      connection.getIncomingMessageQueue().registerQueueListener(this);

      connection.connect(
          true,
          new ConnectionListener() {

            @Override
            public void connectFailure(Throwable failureMsg) {
              connection.close();
            }

            @Override
            public void connectStarted() {}

            @Override
            public void connectSuccess(ByteBuffer remainingInitialData) {
              NetworkManager.getSingleton().upgradeTransferProcessing(connection, null);
              logger.finest("incoming speed check connected: " + getRemoteIp());
            }

            @Override
            public void exceptionThrown(Throwable error) {
              logger.warning("got exception in incoming speed test: " + error.getMessage());
              error.printStackTrace();
              connection.close();
            }

            @Override
            public String getDescription() {
              return "speed connection listener";
            }
          });
      NetworkManager.getSingleton().startTransferProcessing(connection);
    }