code: synchronized void open() throws IOException {
      if (opened) {
        return;
      }
  
      opened = true;
      CompletableFuture<Void> future = new CompletableFuture<>();
      OnRegistration onRegistration = new OnRegistration(future);
  
      try {
        registrationId = face.registerPrefix(prefix, this, (OnRegisterFailed) onRegistration, onRegistration);
        // assumes face.processEvents is driven concurrently elsewhere
        future.get(10, TimeUnit.SECONDS);
        announcementService.announceEntrance(publisherId);
      } catch (IOException | SecurityException | InterruptedException | ExecutionException | TimeoutException e) {
        throw new IOException("Failed to register NDN prefix; pub-sub IO will be impossible", e);
      }
    }
docs: Open the publisher, registering prefixes and announcing group entry. If the publisher is already open, this method
  immediately returns
  
  @throws IOException if prefix registration or group announcement fails