.handler(row -> { .endHandler(v -> {
private void testOneShotStream1(Function<SQLRowStream, Handler<Void>> h) { final AtomicInteger cnt = new AtomicInteger(0); checker().queryStream("SELECT * FROM big_table", onSuccess(res -> { res.resultSetClosedHandler(h.apply(res)) .handler(row -> { cnt.incrementAndGet(); }).endHandler(v -> { assertEquals(200, cnt.get()); }).exceptionHandler(this::fail); })); await(); }
@Test public void testStreamColumnResolution() { String sql = "SELECT ID, FNAME, LNAME FROM select_table ORDER BY ID"; final AtomicInteger cnt = new AtomicInteger(0); connection().queryStream(sql, onSuccess(res -> { res.handler(row -> { assertEquals("doe", row.getString(res.column("lname"))); cnt.incrementAndGet(); }).endHandler(v -> { assertEquals(2, cnt.get()); testComplete(); }).exceptionHandler(t -> { fail(t); }); })); await(); }
public void testStreamFlowControl(Handler<SQLRowStream> initHandler, Handler<SQLRowStream> dataHandler) { String sql = "SELECT ID, FNAME, LNAME FROM select_table ORDER BY ID"; final AtomicInteger cnt = new AtomicInteger(0); final long[] t = {0, 0}; connection().queryStream(sql, onSuccess(res -> { res.handler(row -> { t[cnt.getAndIncrement()] = System.currentTimeMillis(); dataHandler.handle(res); }).endHandler(v -> { assertEquals(2, cnt.get()); assertTrue(t[1] - t[0] >= 1000); testComplete(); }).exceptionHandler(t0 -> { fail(t0); }); initHandler.handle(res); })); await(); }
@Override public SQLRowStream handler(Handler<JsonArray> handler) { rowStream.handler(handler); return this; }
/** * Returns all column names available in the underlying resultset. One needs to carefully use this method since in * contrast to the singular version it does not perform case insensitive lookups or takes alias in consideration on * the column names. * @return the list of columns names returned by the query */ public List<String> columns() { List<String> ret = delegate.columns(); return ret; }
public io.vertx.rxjava.ext.sql.SQLRowStream endHandler(Handler<Void> endHandler) { delegate.endHandler(endHandler); return this; }
/** * Closes the stream/underlying cursor(s). The actual close happens asynchronously. */ public void close() { delegate.close(); }
/** * Request for more results if available */ public void moreResults() { delegate.moreResults(); }
@Override public SQLRowStream fetch(long amount) { rowStream.fetch(amount); return this; }
/** * Event handler when a resultset is closed. This is useful to request for more results. * @param handler called when the current result set is closed * @return */ public io.vertx.rxjava.ext.sql.SQLRowStream resultSetClosedHandler(Handler<Void> handler) { delegate.resultSetClosedHandler(handler); return this; }
/** * Will convert the column name to the json array index. * @param name the column name * @return the json array index */ public int column(String name) { int ret = delegate.column(name); return ret; }
public io.vertx.rxjava.ext.sql.SQLRowStream exceptionHandler(Handler<Throwable> handler) { delegate.exceptionHandler(handler); return this; }
@Override public SQLRowStream pause() { rowStream.pause(); return this; }
@Test public void testOneShotStream4() { final AtomicInteger cnt = new AtomicInteger(0); checker().queryStream("SELECT * FROM big_table", onSuccess(res -> { res.resultSetClosedHandler(v -> { fail(new RuntimeException("wrong state")); }).handler(row -> { if(cnt.incrementAndGet() > 100) { res.close(); } }).endHandler(v -> { fail(new RuntimeException()); }).exceptionHandler(t -> { fail(t); }); })); await(); }
@Test public void testStreamWithParams() { String sql = "SELECT ID, FNAME, LNAME FROM select_table WHERE LNAME = ? ORDER BY ID"; final AtomicInteger cnt = new AtomicInteger(0); connection().queryStreamWithParams(sql, new JsonArray().add("doe"), onSuccess(res -> { res.handler(row -> { cnt.incrementAndGet(); }).endHandler(v -> { assertEquals(2, cnt.get()); testComplete(); }).exceptionHandler(t -> { fail(t); }); })); await(); }
public io.vertx.rxjava.ext.sql.SQLRowStream handler(Handler<JsonArray> handler) { delegate.handler(handler); return this; }
@Override public List<String> columns() { return rowStream.columns(); }