List of usage examples for io.vertx.core.streams WriteStream write
Future<Void> write(T data);
From source file:io.nitor.api.backend.cache.CacheHelpers.java
License:Apache License
public static void tryToCacheContent(RoutingContext ctx, Buffer content) { CacheEvents cache = ctx.get(CTX_KEY_CACHE_EVENTS); if (cache == null) { logger.debug("Not cached: cache handler was not registered"); return;//from w w w. ja v a 2 s.c o m } HttpServerResponse response = ctx.response(); if (response.getStatusCode() != 200) { logger.debug("Not cached: status code {}", response.getStatusCode()); return; } String smaxAge = null; String maxAge = null; for (String cacheControl : response.headers().getAll(CACHE_CONTROL)) { if (cacheControl.contains("private") || cacheControl.contains("no-store")) { logger.debug("Not cached: cache-control {}", cacheControl); return; } if (smaxAge == null) { smaxAge = cacheControlValue(cacheControl, "s-maxage="); } if (maxAge == null) { maxAge = cacheControlValue(cacheControl, "max-age="); } } long age = 0; try { if (smaxAge != null) { age = parseInt(smaxAge); } else if (maxAge != null) { age = parseInt(maxAge); } } catch (Exception ex) { logger.error("Failed to parse cache headers", ex); } if (age <= 0) { logger.debug("Not cached: max-age {}", age); return; } boolean success = false; WriteStream<Buffer> stream = null; try { stream = cache.createCachingStream(response.headers(), currentTimeMillis() + age * 1_000); stream.write(content); success = true; } catch (Exception ex) { logger.error("Failed to cache content", ex); } finally { if (stream != null) { cache.streamFinished(success); } } }
From source file:org.sfs.io.AsyncIO.java
License:Apache License
public static Observable<Void> append(Buffer buffer, final WriteStream<Buffer> ws) { return Observable.defer(() -> { ObservableFuture<Void> drainHandler = RxHelper.observableFuture(); ws.exceptionHandler(drainHandler::fail); if (ws.writeQueueFull()) { ws.drainHandler(drainHandler::complete); } else {// w ww . j a v a 2 s .co m drainHandler.complete(null); } return drainHandler.flatMap(aVoid -> { ObservableFuture<Void> writeHandler = RxHelper.observableFuture(); ws.exceptionHandler(writeHandler::fail); ws.write(buffer); if (ws.writeQueueFull()) { ws.drainHandler(writeHandler::complete); } else { writeHandler.complete(null); } return writeHandler; }); }); }