process.interruptHandler(v -> { vertx.cancelTimer(id); process.end();
@Override public void start() throws Exception { Command starwars = CommandBuilder.command("echokeyboard"). processHandler(process -> { // Echo process.stdinHandler(keys -> { process.write(keys.replace('\r', '\n')); }); // Terminate when user hits Ctrl-C process.interruptHandler(v -> { process.end(); }); }).build(vertx); ShellService service = ShellService.create(vertx, new ShellServiceOptions().setTelnetOptions( new TelnetTermOptions().setHost("localhost").setPort(3000) )); CommandRegistry.getShared(vertx).registerCommand(starwars); service.start(ar -> { if (!ar.succeeded()) { ar.cause().printStackTrace(); } }); } }
process.interruptHandler(v -> { socket.close(); });
/** * Set an interrupt handler, this handler is called when the command is interrupted, for instance user * press <code>Ctrl-C</code>. * @param handler the interrupt handler * @return this command */ public io.vertx.rxjava.ext.shell.command.CommandProcess interruptHandler(Handler<Void> handler) { delegate.interruptHandler(handler); return this; }
/** * Set an interrupt handler, this handler is called when the command is interrupted, for instance user * press <code>Ctrl-C</code>. * @param handler the interrupt handler * @return this command */ public io.vertx.rxjava.ext.shell.command.CommandProcess interruptHandler(Handler<Void> handler) { delegate.interruptHandler(handler); return this; }
process.interruptHandler(i -> { vertx.cancelTimer(timer); process.end();
private void scheduleSleep(CommandProcess process, long millis) { Vertx vertx = process.vertx(); if (millis > 0) { long now = System.currentTimeMillis(); AtomicLong remaining = new AtomicLong(-1); long id = process.vertx().setTimer(millis, v -> { process.end(); }); process.suspendHandler(v -> { vertx.cancelTimer(id); remaining.set(millis - (System.currentTimeMillis() - now)); }); process.resumeHandler(v -> { scheduleSleep(process, remaining.get()); }); process.interruptHandler(v -> { process.end(); }); process.endHandler(v -> { vertx.cancelTimer(id); }); } else { process.end(); } } }
return local ? eb.localConsumer(address, handler) : eb.consumer(address, handler); }).collect(Collectors.toList()); process.interruptHandler(done -> { process.end(); });
Async interruptedLatch = context.async(6); builder.processHandler(process -> { process.interruptHandler(v -> { interruptedLatch.countDown(); });
process.write("-> " + line + "\n"); }); process.interruptHandler(v -> process.end()); }); mgr.registerCommand(echoKeyboardCmd.build(vertx)); process.write("[" + process.width() + "," + process.height() + "]\n"); }); process.interruptHandler(v -> { process.end(); });
@Test public void testInterruptSuspendedProcess(TestContext context) { CommandBuilder builder = CommandBuilder.command("hello"); Async runningLatch = context.async(); Async suspendedLatch = context.async(); Async interruptedLatch = context.async(3); builder.processHandler(process -> { process.interruptHandler(v -> interruptedLatch.countDown()); process.suspendHandler(v -> suspendedLatch.complete()); runningLatch.complete(); }); Process process = builder.build(vertx).createProcess().setSession(Session.create()).setTty(Pty.create().slave()); process.run(); runningLatch.awaitSuccess(10000); process.suspend(); suspendedLatch.awaitSuccess(10000); process.interrupt(); process.interrupt(); process.interrupt(); }