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

x33g5p2x  于2022-01-19 转载在 其他  
字(8.4k)|赞(0)|评价(0)|浏览(159)

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

Future.setHandler介绍

[英]Set a handler for the result.

If the future has already been completed it will be called immediately. Otherwise it will be called when the future is completed.
[中]为结果设置一个处理程序。
如果未来已经完成,它将立即被调用。否则,它将在未来完成时调用。

代码示例

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

@Override
public synchronized HttpClientRequest handler(Handler<AsyncResult<HttpClientResponse>> handler) {
 respHandler.setHandler(handler);
 return this;
}

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

@Override
public synchronized HttpClientRequest handler(Handler<AsyncResult<HttpClientResponse>> handler) {
 if (handler != null) {
  checkComplete();
 }
 respFut.setHandler(handler);
 return this;
}

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

public Push(Http2Stream stream,
      String contentEncoding,
      HttpMethod method,
      String uri,
      boolean writable,
      Handler<AsyncResult<HttpServerResponse>> completionHandler) {
 super(Http2ServerConnection.this, stream, writable);
 this.method = method;
 this.uri = uri;
 this.contentEncoding = contentEncoding;
 this.completionHandler = Future.<HttpServerResponse>future().setHandler(completionHandler);
}

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

/**
 * Map the result of a future to a specific {@code value}.<p>
 *
 * When this future succeeds, this {@code value} will complete the future returned by this method call.<p>
 *
 * When this future fails, the failure will be propagated to the returned future.
 *
 * @param value the value that eventually completes the mapped future
 * @return the mapped future
 */
default <V> Future<V> map(V value) {
 Future<V> ret = Future.future();
 setHandler(ar -> {
  if (ar.succeeded()) {
   ret.complete(value);
  } else {
   ret.fail(ar.cause());
  }
 });
 return ret;
}

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

void subscribe(Handler<WebSocket> completionHandler, Handler<Throwable> failureHandler) {
 Future<WebSocket> fut = Future.future();
 fut.setHandler(ar -> {
  if (ar.succeeded()) {
   completionHandler.handle(ar.result());
  } else {
   failureHandler.handle(ar.cause());
  }
 });
 exceptionHandler(fut::tryFail);
 handler(fut::tryComplete);
}

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

StreamImpl(Http1xClientConnection conn, int id, Handler<AsyncResult<HttpClientStream>> handler) {
 this.conn = conn;
 this.fut = Future.<HttpClientStream>future().setHandler(handler);
 this.id = id;
 this.queue = new InboundBuffer<>(conn.context, 5);
}

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

/**
 * Map the failure of a future to a specific {@code value}.<p>
 *
 * When this future fails, this {@code value} will complete the future returned by this method call.<p>
 *
 * When this future succeeds, the result will be propagated to the returned future.
 *
 * @param value the value that eventually completes the mapped future
 * @return the mapped future
 */
default Future<T> otherwise(T value) {
 Future<T> ret = Future.future();
 setHandler(ar -> {
  if (ar.succeeded()) {
   ret.complete(result());
  } else {
   ret.complete(value);
  }
 });
 return ret;
}

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

Checker(Future<T> future) {
 future.setHandler(ar -> {
  count.incrementAndGet();
  result.set(ar);
 });
 this.future = future;
}

代码示例来源:origin: vert-x3/vertx-examples

@Override
public void start() throws Exception {
 Future<String> future = anAsyncAction();
 future.compose(this::anotherAsyncAction)
  .setHandler(ar -> {
   if (ar.failed()) {
    System.out.println("Something bad happened");
    ar.cause().printStackTrace();
   } else {
    System.out.println("Result: " + ar.result());
   }
  });
}

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

protected void doHandleResponse(HttpClientResponseImpl resp, long timeoutMs) {
 if (reset == null) {
  int statusCode = resp.statusCode();
  if (followRedirects > 0 && statusCode >= 300 && statusCode < 400) {
   Future<HttpClientRequest> next = client.redirectHandler().apply(resp);
   if (next != null) {
    next.setHandler(ar -> {
     if (ar.succeeded()) {
      handleNextRequest((HttpClientRequestImpl) ar.result(), timeoutMs);
     } else {
      handleException(ar.cause());
     }
    });
    return;
   }
  }
  if (statusCode == 100) {
   if (continueHandler != null) {
    continueHandler.handle(null);
   }
  } else {
   respFut.complete(resp);
  }
 }
}

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

@Override
public void connect(ConnectionListener<HttpClientConnection> listener, ContextInternal context, Handler<AsyncResult<ConnectResult<HttpClientConnection>>> handler) {
 Future<ConnectResult<HttpClientConnection>> future = Future.<ConnectResult<HttpClientConnection>>future().setHandler(handler);
 try {
  doConnect(listener, context, future);
 } catch(Exception e) {
  future.tryFail(e);
 }
}

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

public Query(String name, DnsRecordType[] types, Handler<AsyncResult<List<T>>> handler) {
 this.msg = new DatagramDnsQuery(null, dnsServer, ThreadLocalRandom.current().nextInt()).setRecursionDesired(options.isRecursionDesired());
 for (DnsRecordType type: types) {
  msg.addRecord(DnsSection.QUESTION, new DefaultDnsQuestion(name, type, DnsRecord.CLASS_IN));
 }
 this.fut = Future.<List<T>>future().setHandler(handler);
 this.types = types;
 this.name = name;
}

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

private  static CompositeFuture join(Function<CompositeFuture, Throwable> pred, Future<?>... results) {
 CompositeFutureImpl composite = new CompositeFutureImpl(results);
 int len = results.length;
 for (int i = 0; i < len; i++) {
  results[i].setHandler(ar -> {
   Handler<AsyncResult<CompositeFuture>> handler = null;
   synchronized (composite) {
    composite.count++;
    if (!composite.isComplete() && composite.count == len) {
     // Take decision here
     Throwable failure = pred.apply(composite);
     handler = composite.setCompleted(failure);
    }
   }
   if (handler != null) {
    handler.handle(composite);
   }
  });
 }
 if (len == 0) {
  composite.setCompleted(null);
 }
 return composite;
}

代码示例来源:origin: vert-x3/vertx-examples

@Override
public void start(Future<Void> future) {
 startTransactionService();
 startHttpServer().setHandler(future.completer());
}

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

@Override
 public void connect(ConnectionListener<FakeConnection> listener, ContextInternal context, Handler<AsyncResult<ConnectResult<FakeConnection>>> handler) {
  pendingRequests.add(new FakeConnection(context, listener, Future.<ConnectResult<FakeConnection>>future().setHandler(handler)));
 }
}

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

@Test
public void testReleaseHandlerAfterCompletion() throws Exception {
 Future<String> f = Future.future();
 Field handlerField = f.getClass().getDeclaredField("handler");
 handlerField.setAccessible(true);
 f.setHandler(ar -> {});
 f.complete();
 assertNull(handlerField.get(f));
 f.setHandler(ar -> {});
 assertNull(handlerField.get(f));
 f = Future.future();
 f.setHandler(ar -> {});
 f.fail("abc");
 assertNull(handlerField.get(f));
 f.setHandler(ar -> {});
 assertNull(handlerField.get(f));
}

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

@Override
 public void connect(ConnectionListener<FakeConnection> listener, ContextInternal context, Handler<AsyncResult<ConnectResult<FakeConnection>>> handler) {
  int i = ThreadLocalRandom.current().nextInt(100);
  FakeConnection conn = new FakeConnection(context, listener, Future.<ConnectResult<FakeConnection>>future().setHandler(handler));
  if (i < 10) {
   conn.fail(new Exception("Could not connect"));
  } else {
   conn.connect();
  }
 }
};

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

@Override
public void undeploy(String deploymentID, Handler<AsyncResult<Void>> completionHandler) {
 HAManager haManager = haManager();
 Future<Void> haFuture = Future.future();
 if (haManager != null && haManager.isEnabled()) {
  this.executeBlocking(fut -> {
   haManager.removeFromHA(deploymentID);
   fut.complete();
  }, false, haFuture);
 } else {
  haFuture.complete();
 }
 haFuture.compose(v -> {
  Future<Void> deploymentFuture = Future.future();
  deploymentManager.undeployVerticle(deploymentID, deploymentFuture);
  return deploymentFuture;
 }).setHandler(completionHandler);
}

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

private void pausingServer(Consumer<Future<Void>> consumer) {
 Future<Void> resumeFuture = Future.future();
 server.requestHandler(req -> {
  req.response().setChunked(true);
  req.pause();
  Context ctx = vertx.getOrCreateContext();
  resumeFuture.setHandler(v1 -> {
   ctx.runOnContext(v2 -> {
    req.resume();
   });
  });
  req.handler(buff -> {
   req.response().write(buff);
  });
 });
 server.listen(onSuccess(s -> consumer.accept(resumeFuture)));
}

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

@Test
public void testServerDrainHandler() {
 drainingServer(resumeFuture -> {
  client.request(HttpMethod.GET, DEFAULT_HTTP_PORT, DEFAULT_HTTP_HOST, DEFAULT_TEST_URI, onSuccess(resp -> {
   resp.pause();
   resumeFuture.setHandler(ar -> resp.resume());
  })).end();
 });
 await();
}

相关文章