Example usage for io.vertx.core.streams WriteStream write

List of usage examples for io.vertx.core.streams WriteStream write

Introduction

In this page you can find the example usage for io.vertx.core.streams WriteStream write.

Prototype

Future<Void> write(T data);

Source Link

Document

Write some data to the stream.

Usage

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;
        });
    });
}