io.vertx.core.Context.runOnContext()方法的使用及代码示例

x33g5p2x  于2022-01-18 转载在 其他  
字(7.0k)|赞(0)|评价(0)|浏览(249)

本文整理了Java中io.vertx.core.Context.runOnContext()方法的一些代码示例,展示了Context.runOnContext()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Context.runOnContext()方法的具体详情如下:
包路径:io.vertx.core.Context
类名称:Context
方法名:runOnContext

Context.runOnContext介绍

[英]Run the specified action asynchronously on the same context, some time after the current execution has completed.
[中]在当前执行完成一段时间后,在同一上下文上异步运行指定的操作。

代码示例

代码示例来源:origin: eclipse-vertx/vert.x

private <T> void reportResult(Context context, Handler<AsyncResult<T>> completionHandler, AsyncResult<T> result) {
 context.runOnContext(v -> {
  try {
   completionHandler.handle(result);
  } catch (Throwable t) {
   log.error("Failure in calling handler", t);
   throw t;
  }
 });
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
public void get(Handler<AsyncResult<Long>> resultHandler) {
 Objects.requireNonNull(resultHandler, "resultHandler");
 Context context = vertx.getOrCreateContext();
 context.runOnContext(v -> resultHandler.handle(Future.succeededFuture(counter.get())));
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
public void getAndAdd(long value, Handler<AsyncResult<Long>> resultHandler) {
 Objects.requireNonNull(resultHandler, "resultHandler");
 Context context = vertx.getOrCreateContext();
 context.runOnContext(v -> resultHandler.handle(Future.succeededFuture(counter.getAndAdd(value))));
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
public void decrementAndGet(Handler<AsyncResult<Long>> resultHandler) {
 Objects.requireNonNull(resultHandler, "resultHandler");
 Context context = vertx.getOrCreateContext();
 context.runOnContext(v -> resultHandler.handle(Future.succeededFuture(counter.decrementAndGet())));
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
public void addAndGet(long value, Handler<AsyncResult<Long>> resultHandler) {
 Objects.requireNonNull(resultHandler, "resultHandler");
 Context context = vertx.getOrCreateContext();
 context.runOnContext(v -> resultHandler.handle(Future.succeededFuture(counter.addAndGet(value))));
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
public synchronized MessageConsumer<T> endHandler(Handler<Void> endHandler) {
 if (endHandler != null) {
  // We should use the HandlerHolder context to properly do this (needs small refactoring)
  Context endCtx = vertx.getOrCreateContext();
  this.endHandler = v1 -> endCtx.runOnContext(v2 -> endHandler.handle(null));
 } else {
  this.endHandler = null;
 }
 return this;
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
public void incrementAndGet(Handler<AsyncResult<Long>> resultHandler) {
 Objects.requireNonNull(resultHandler, "resultHandler");
 Context context = vertx.getOrCreateContext();
 context.runOnContext(v -> resultHandler.handle(Future.succeededFuture(counter.incrementAndGet())));
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
public void getAndIncrement(Handler<AsyncResult<Long>> resultHandler) {
 Objects.requireNonNull(resultHandler, "resultHandler");
 Context context = vertx.getOrCreateContext();
 context.runOnContext(v -> resultHandler.handle(Future.succeededFuture(counter.getAndIncrement())));
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
 public void compareAndSet(long expected, long value, Handler<AsyncResult<Boolean>> resultHandler) {
  Objects.requireNonNull(resultHandler, "resultHandler");
  Context context = vertx.getOrCreateContext();
  context.runOnContext(v -> resultHandler.handle(Future.succeededFuture(counter.compareAndSet(expected, value))));
 }
}

代码示例来源:origin: eclipse-vertx/vert.x

private void checkCallDrainHandler() {
 if (overflow) {
  overflow = false;
  context.runOnContext(v -> {
   Handler<Void> drainHandler;
   synchronized (InboundBuffer.this) {
    drainHandler = this.drainHandler;
   }
   handleEvent(drainHandler, null);
  });
 }
}

代码示例来源:origin: eclipse-vertx/vert.x

void acquireLock() {
  if (status.compareAndSet(Status.WAITING, Status.ACQUIRED)) {
   if (timerId != null) {
    context.owner().cancelTimer(timerId);
   }
   context.runOnContext(v -> handler.handle(Future.succeededFuture(new AsyncLock(lockName))));
  } else {
   context.runOnContext(v -> nextWaiter(lockName));
  }
 }
}

代码示例来源:origin: eclipse-vertx/vert.x

private void getLocalCounter(String name, Handler<AsyncResult<Counter>> resultHandler) {
 Counter counter = localCounters.computeIfAbsent(name, n -> new AsynchronousCounter(vertx));
 Context context = vertx.getOrCreateContext();
 context.runOnContext(v -> resultHandler.handle(Future.succeededFuture(counter)));
}

代码示例来源:origin: eclipse-vertx/vert.x

protected void startServer(Context context, HttpServer server) throws Exception {
 CountDownLatch latch = new CountDownLatch(1);
 context.runOnContext(v -> {
  server.listen(onSuccess(s -> latch.countDown()));
 });
 awaitLatch(latch);
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
public void getCounter(String name, Handler<AsyncResult<Counter>> resultHandler) {
 AtomicLong counter = new AtomicLong();
 AtomicLong prev = counters.putIfAbsent(name, counter);
 if (prev != null) {
  counter = prev;
 }
 AtomicLong theCounter = counter;
 Context context = vertx.getOrCreateContext();
 context.runOnContext(v -> resultHandler.handle(Future.succeededFuture(new AsynchronousCounter(vertx, theCounter))));
}

代码示例来源:origin: eclipse-vertx/vert.x

protected void startServer(SocketAddress remoteAddress, Context context, NetServer server) throws Exception {
 CountDownLatch latch = new CountDownLatch(1);
 context.runOnContext(v -> {
  server.listen(remoteAddress, onSuccess(s -> latch.countDown()));
 });
 awaitLatch(latch);
}

代码示例来源:origin: eclipse-vertx/vert.x

@Override
 public void start() throws Exception {
  thread.set(Thread.currentThread());
  assertTrue(Context.isOnVertxThread());
  assertTrue(Context.isOnWorkerThread());
  assertFalse(Context.isOnEventLoopThread());
  assertTrue(Thread.currentThread().getName().startsWith(poolName + "-"));
  context.runOnContext(v -> {
   vertx.undeploy(context.deploymentID());
  });
 }
}, new DeploymentOptions().setWorker(true).setWorkerPoolName(poolName), onSuccess(deployment::set));

代码示例来源:origin: eclipse-vertx/vert.x

@Test
public void testExecuteBlockingThreadSyncComplete() throws Exception {
 Context context = vertx.getOrCreateContext();
 context.<Void>runOnContext(v -> {
  Thread expected = Thread.currentThread();
  context.executeBlocking(Future::complete, r -> {
   assertSame(expected, Thread.currentThread());
   testComplete();
  });
 });
 await();
}

代码示例来源:origin: eclipse-vertx/vert.x

@Test
public void testDefaultContextExceptionHandler() {
 RuntimeException failure = new RuntimeException();
 Context context = vertx.getOrCreateContext();
 vertx.exceptionHandler(err -> {
  assertSame(failure, err);
  testComplete();
 });
 context.runOnContext(v -> {
  throw failure;
 });
 await();
}

代码示例来源:origin: eclipse-vertx/vert.x

@Test
public void testHighWaterMark() {
 context.runOnContext(v -> {
  buffer = new InboundBuffer<>(context, 4L);
  buffer.pause();
  fill();
  assertEquals(5, sequence.get());
  testComplete();
 });
 await();
}

代码示例来源:origin: eclipse-vertx/vert.x

@Test
public void testGettingContextContextUnderContextAnotherInstanceShouldReturnDifferentContext() throws Exception {
 Vertx other = vertx();
 Context context = vertx.getOrCreateContext();
 context.runOnContext(v -> {
  Context otherContext = other.getOrCreateContext();
  assertNotSame(otherContext, context);
  testComplete();
 });
 await();
}

相关文章