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 ) ; } }
Open the publisher registering prefixes and announcing group entry . If the publisher is already open this method immediately returns