public BatchStream(ReadStream<Buffer> rs, WriteStream<Buffer> ws) { Objects.requireNonNull(rs, "ReadStream"); Objects.requireNonNull(ws, "WriteStream"); recordParser = RecordParser.newFixed(4, rs); writeStream = ws; // Propagate exceptions to the current stream recordParser.exceptionHandler(throwable -> { if (exceptionHandler != null) { exceptionHandler.handle(throwable); } }); writeStream.exceptionHandler(throwable -> { if (exceptionHandler != null) { exceptionHandler.handle(throwable); } }); }
@Override public void start() throws Exception { vertx.createNetClient().connect(1234, "localhost", res -> { if (res.succeeded()) { NetSocket socket = res.result(); RecordParser.newDelimited("\n", socket) .endHandler(v -> socket.close()) .exceptionHandler(t -> { t.printStackTrace(); socket.close(); }) .handler(buffer -> { String greeting = buffer.toString("UTF-8"); System.out.println("Net client receiving: " + greeting); }); // Now send some data Stream.of("John", "Joe", "Lisa", "Bill").forEach(name -> { System.out.println("Net client sending: " + name); socket.write(name).write("\n"); }); } else { System.out.println("Failed to connect " + res.cause()); } }); } }
@Override public void start() throws Exception { vertx.createNetServer().connectHandler(sock -> { RecordParser parser = RecordParser.newDelimited("\n", sock); parser .endHandler(v -> sock.close()) .exceptionHandler(t -> { t.printStackTrace(); sock.close(); }) .handler(buffer -> { String name = buffer.toString("UTF-8"); sock.write("Hello " + name + "\n", "UTF-8"); }); }).listen(1234); System.out.println("Echo server is now listening"); } }
private void doTestDelimitedMaxRecordSize(final Buffer input, Buffer delim, Integer[] chunkSizes, int maxRecordSize, Handler<Throwable> exHandler, final Buffer... expected) { final Buffer[] results = new Buffer[expected.length]; Handler<Buffer> out = new Handler<Buffer>() { int pos; public void handle(Buffer buff) { results[pos++] = buff; } }; RecordParser parser = RecordParser.newDelimited(delim, out); parser.maxRecordSize(maxRecordSize); parser.exceptionHandler(exHandler); feedChunks(input, parser, chunkSizes); checkResults(expected, results); } }
if (handler == null) { recordParser.handler(null); recordParser.exceptionHandler(null); recordParser.endHandler(null); return this;
stream.fail(cause); List<Throwable> failures = new ArrayList<>(); parser.exceptionHandler(failures::add); stream.fail(cause); assertEquals(Collections.singletonList(cause), failures);
public io.vertx.rxjava.core.parsetools.RecordParser exceptionHandler(Handler<Throwable> handler) { delegate.exceptionHandler(handler); return this; }
public io.vertx.rxjava.core.parsetools.RecordParser exceptionHandler(Handler<Throwable> handler) { delegate.exceptionHandler(handler); return this; }
private void doTestDelimitedMaxRecordSize(final Buffer input, Buffer delim, Integer[] chunkSizes, int maxRecordSize, Handler<Throwable> exHandler, final Buffer... expected) { final Buffer[] results = new Buffer[expected.length]; Handler<Buffer> out = new Handler<Buffer>() { int pos; public void handle(Buffer buff) { results[pos++] = buff; } }; RecordParser parser = RecordParser.newDelimited(delim, out); parser.maxRecordSize(maxRecordSize); parser.exceptionHandler(exHandler); feedChunks(input, parser, chunkSizes); checkResults(expected, results); } }
stream.fail(cause); List<Throwable> failures = new ArrayList<>(); parser.exceptionHandler(failures::add); stream.fail(cause); assertEquals(Collections.singletonList(cause), failures);
public static Set<String> getMetricNames(Vertx vertx, TestContext context, int port, String host, String requestURI, long timeout, int maxAttempts, long sleepBeforeRetryMs) { Async async = context.async(); Set<String> metrics = Collections.synchronizedSet(new HashSet<>()); tryConnect(vertx, context, port, host, requestURI, resp -> { context.assertEquals(200, resp.statusCode()); RecordParser parser = RecordParser.newDelimited("\n", resp); parser.exceptionHandler(context::fail).endHandler(v -> { async.countDown(); }).handler(buffer -> { String line = buffer.toString(); if (line.startsWith("# TYPE")) { metrics.add(line.split(" ")[2]); } }); }, maxAttempts, sleepBeforeRetryMs, 0); async.await(timeout); return metrics; }