Search in sources :

Example 1 with RequestBodyAlreadyReadException

use of ratpack.http.RequestBodyAlreadyReadException in project ratpack by ratpack.

the class RequestBody method read.

@Override
public Promise<ByteBuf> read(long maxContentLength, Block onTooLarge) {
    return Promise.<ByteBuf>async(downstream -> {
        if (read) {
            downstream.error(new RequestBodyAlreadyReadException());
            return;
        }
        read = true;
        this.onTooLarge = onTooLarge;
        if (advertisedLength > maxContentLength || length > maxContentLength) {
            tooLarge(downstream);
        } else if (done) {
            complete(downstream);
        } else {
            this.maxContentLength = maxContentLength;
            this.downstream = downstream;
            if (HttpUtil.is100ContinueExpected(request)) {
                HttpResponse continueResponse = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.CONTINUE, Unpooled.EMPTY_BUFFER);
                ctx.writeAndFlush(continueResponse).addListener(future -> {
                    if (!future.isSuccess()) {
                        ctx.fireExceptionCaught(future.cause());
                    }
                });
            }
            ctx.read();
        }
    });
}
Also used : Downstream(ratpack.exec.Downstream) Promise(ratpack.exec.Promise) RequestBodyAlreadyReadException(ratpack.http.RequestBodyAlreadyReadException) Block(ratpack.func.Block) Unpooled(io.netty.buffer.Unpooled) ArrayList(java.util.ArrayList) RequestBodyTooLargeException(ratpack.http.RequestBodyTooLargeException) Consumer(java.util.function.Consumer) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) BufferingPublisher(ratpack.stream.internal.BufferingPublisher) io.netty.handler.codec.http(io.netty.handler.codec.http) List(java.util.List) ByteBuf(io.netty.buffer.ByteBuf) Subscription(org.reactivestreams.Subscription) TransformablePublisher(ratpack.stream.TransformablePublisher) RequestBodyAlreadyReadException(ratpack.http.RequestBodyAlreadyReadException) ByteBuf(io.netty.buffer.ByteBuf)

Aggregations

ByteBuf (io.netty.buffer.ByteBuf)1 Unpooled (io.netty.buffer.Unpooled)1 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)1 io.netty.handler.codec.http (io.netty.handler.codec.http)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Consumer (java.util.function.Consumer)1 Subscription (org.reactivestreams.Subscription)1 Downstream (ratpack.exec.Downstream)1 Promise (ratpack.exec.Promise)1 Block (ratpack.func.Block)1 RequestBodyAlreadyReadException (ratpack.http.RequestBodyAlreadyReadException)1 RequestBodyTooLargeException (ratpack.http.RequestBodyTooLargeException)1 TransformablePublisher (ratpack.stream.TransformablePublisher)1 BufferingPublisher (ratpack.stream.internal.BufferingPublisher)1