private void join() {
    daemon = dsConnectionDaemonFactory.apply(this);
    daemon.start();
    // give the daemon some time to get us connected
    // we don't want to wait forever since there may be no one to connect to
    try {
      long endTime = System.currentTimeMillis() + 2000; // wait 2 seconds
      while (!connected && daemon.isAlive() && System.currentTimeMillis() < endTime) {
        daemon.join(200);
      }
    } catch (InterruptedException e) {
      Thread.currentThread().interrupt();
      // Peremptory cancellation check, but keep going
      system.getCancelCriterion().checkCancelInProgress(e);
    }
  }
Creates a new {@code RemoteGfManagerAgent} accord to the given config. Along the way it
(attempts to) connects to the distributed system.
geode-core/src/main/java/org/apache/geode/internal/admin/remote/RemoteGfManagerAgent.java