code: public synchronized void startTransfer(DataSource source,
                                             TransferContext context,
                                             int connections,
                                             boolean reusable)
          throws ServerException {
  
          // things would get messed up if more than 1 file was transfered
          // simultaneously with the same transfer manager
          if (transferThreadCount != 0) {
              throw new ServerException(
                              ServerException.PREVIOUS_TRANSFER_ACTIVE);
          }
  
          for (int i = 0; i < connections; i++) {
              logger.debug(
                           "checking out a socket; total cached sockets = "
                           + socketPool.count()
                           + "; free = "
                           + socketPool.countFree()
                           + "; busy = "
                           + socketPool.countBusy());
  
              SocketBox sbox = socketPool.checkOut();
              if (sbox == null) {
                  logger.debug("No free sockets available, aborting.");
                  return;
              }
              ((ManagedSocketBox) sbox).setReusable(reusable);
  
              Task task =
                  new ActiveStartTransferTask(source,
                                              localControlChannel,
                                              sbox,
                                              gSession,
                                              dataChannelFactory,
                                              context);
  
              runTask(task);
          }
      }
docs: This should be used once the remote active server connected to us.
  This method starts transfer threads that will
  read data from the source and send.
  
  @param reusable if set to false, the sockets will not be reused after
  the transfer