Example usage for io.netty.handler.codec.http HttpMessage protocolVersion

List of usage examples for io.netty.handler.codec.http HttpMessage protocolVersion

Introduction

In this page you can find the example usage for io.netty.handler.codec.http HttpMessage protocolVersion.

Prototype

HttpVersion protocolVersion();

Source Link

Document

Returns the protocol version of this HttpMessage

Usage

From source file:cc.changic.platform.etl.schedule.http.HttpHeaderUtil.java

License:Apache License

/**
 * Returns {@code true} if and only if the connection can remain open and
 * thus 'kept alive'.  This methods respects the value of the
 * {@code "Connection"} header first and then the return value of
 * {@link io.netty.handler.codec.http.HttpVersion#isKeepAliveDefault()}.
 *//*from  w w w  . ja v  a  2s .  c om*/
public static boolean isKeepAlive(HttpMessage message) {
    String connection = message.headers().get(Names.CONNECTION);
    if (connection != null && AsciiString.equalsIgnoreCase(Values.CLOSE, connection)) {
        return false;
    }

    if (message.protocolVersion().isKeepAliveDefault()) {
        return !AsciiString.equalsIgnoreCase(Values.CLOSE, connection);
    } else {
        return AsciiString.equalsIgnoreCase(Values.KEEP_ALIVE, connection);
    }
}

From source file:cc.changic.platform.etl.schedule.http.HttpHeaderUtil.java

License:Apache License

/**
 * Sets the value of the {@code "Connection"} header depending on the
 * protocol version of the specified message.  This getMethod sets or removes
 * the {@code "Connection"} header depending on what the default keep alive
 * mode of the message's protocol version is, as specified by
 * {@link io.netty.handler.codec.http.HttpVersion#isKeepAliveDefault()}.
 * <ul>/*from  w  w  w .jav  a 2  s  .  c om*/
 * <li>If the connection is kept alive by default:
 *     <ul>
 *     <li>set to {@code "close"} if {@code keepAlive} is {@code false}.</li>
 *     <li>remove otherwise.</li>
 *     </ul></li>
 * <li>If the connection is closed by default:
 *     <ul>
 *     <li>set to {@code "keep-alive"} if {@code keepAlive} is {@code true}.</li>
 *     <li>remove otherwise.</li>
 *     </ul></li>
 * </ul>
 */
public static void setKeepAlive(HttpMessage message, boolean keepAlive) {
    HttpHeaders h = message.headers();
    if (message.protocolVersion().isKeepAliveDefault()) {
        if (keepAlive) {
            h.remove(Names.CONNECTION);
        } else {
            h.set(Names.CONNECTION, Values.CLOSE);
        }
    } else {
        if (keepAlive) {
            h.set(Names.CONNECTION, Values.KEEP_ALIVE);
        } else {
            h.remove(Names.CONNECTION);
        }
    }
}

From source file:cc.changic.platform.etl.schedule.http.HttpHeaderUtil.java

License:Apache License

/**
 * Returns {@code true} if and only if the specified message contains the
 * {@code "Expect: 100-continue"} header.
 *///from  w ww .  j a v  a2s.co m
public static boolean is100ContinueExpected(HttpMessage message) {
    // Expect: 100-continue is for requests only.
    if (!(message instanceof HttpRequest)) {
        return false;
    }

    // It works only on HTTP/1.1 or later.
    if (message.protocolVersion().compareTo(HttpVersion.HTTP_1_1) < 0) {
        return false;
    }

    // In most cases, there will be one or zero 'Expect' header.
    String value = message.headers().get(Names.EXPECT);
    if (value == null) {
        return false;
    }
    if (AsciiString.equalsIgnoreCase(Values.CONTINUE, value)) {
        return true;
    }

    // Multiple 'Expect' headers.  Search through them.
    return message.headers().contains(Names.EXPECT, Values.CONTINUE, true);
}

From source file:com.flysoloing.learning.network.netty.http2.helloworld.multiplex.server.Http2ServerInitializer.java

License:Apache License

/**
 * Configure the pipeline for a cleartext upgrade from HTTP to HTTP/2.0
 *//*  ww w . j  av  a  2s  .c o  m*/
private void configureClearText(SocketChannel ch) {
    final ChannelPipeline p = ch.pipeline();
    final HttpServerCodec sourceCodec = new HttpServerCodec();

    p.addLast(sourceCodec);
    p.addLast(new HttpServerUpgradeHandler(sourceCodec, upgradeCodecFactory));
    p.addLast(new SimpleChannelInboundHandler<HttpMessage>() {
        @Override
        protected void channelRead0(ChannelHandlerContext ctx, HttpMessage msg) throws Exception {
            // If this handler is hit then no upgrade has been attempted and the client is just talking HTTP.
            System.err.println("Directly talking: " + msg.protocolVersion() + " (no upgrade was attempted)");
            ChannelPipeline pipeline = ctx.pipeline();
            ChannelHandlerContext thisCtx = pipeline.context(this);
            pipeline.addAfter(thisCtx.name(), null,
                    new HelloWorldHttp1Handler("Direct. No Upgrade Attempted."));
            pipeline.replace(this, null, new HttpObjectAggregator(maxHttpContentLength));
            ctx.fireChannelRead(ReferenceCountUtil.retain(msg));
        }
    });

    p.addLast(new UserEventLogger());
}

From source file:com.github.thinker0.mesos.MesosHealthCheckerServer.java

License:Apache License

public boolean is100ContinueExpected(HttpMessage message) {
    if (!(message instanceof HttpRequest)) {
        return false;
    } else if (message.protocolVersion().compareTo(HttpVersion.HTTP_1_1) < 0) {
        return false;
    } else {//from  w  w w.j a va 2 s  . c om
        CharSequence value = (CharSequence) message.headers().get(HttpHeaderNames.EXPECT);
        return value == null ? false
                : (HttpHeaderValues.CONTINUE.contentEqualsIgnoreCase(value) ? true
                        : message.headers().contains(HttpHeaderNames.EXPECT, HttpHeaderValues.CONTINUE, true));
    }
}

From source file:com.github.thinker0.mesos.MesosHealthCheckerServer.java

License:Apache License

public boolean isKeepAlive(HttpMessage message) {
    CharSequence connection = (CharSequence) message.headers().get(HttpHeaderNames.CONNECTION);
    return connection != null && HttpHeaderValues.CLOSE.contentEqualsIgnoreCase(connection) ? false
            : (message.protocolVersion().isKeepAliveDefault()
                    ? !HttpHeaderValues.CLOSE.contentEqualsIgnoreCase(connection)
                    : HttpHeaderValues.KEEP_ALIVE.contentEqualsIgnoreCase(connection));
}

From source file:com.hop.hhxx.example.http2.helloworld.multiplex.server.Http2ServerInitializer.java

License:Apache License

/**
 * Configure the pipeline for a cleartext upgrade from HTTP to HTTP/2.0
 *///from  w ww. java  2  s . c  om
private void configureClearText(SocketChannel ch) {
    final ChannelPipeline p = ch.pipeline();
    final HttpServerCodec sourceCodec = new HttpServerCodec();

    p.addLast(sourceCodec);
    p.addLast(new HttpServerUpgradeHandler(sourceCodec, upgradeCodecFactory));
    p.addLast(new SimpleChannelInboundHandler<HttpMessage>() {
        @Override
        protected void channelRead0(ChannelHandlerContext ctx, HttpMessage msg) throws Exception {
            // If this handler is hit then no upgrade has been attempted and the client is just talking HTTP.
            System.err.println("Directly talking: " + msg.protocolVersion() + " (no upgrade was attempted)");
            ChannelPipeline pipeline = ctx.pipeline();
            ChannelHandlerContext thisCtx = pipeline.context(this);
            pipeline.addAfter(thisCtx.name(), null,
                    new HelloWorldHttp1Handler("Direct. No Upgrade Attempted."));
            pipeline.replace(this, null, new HttpObjectAggregator(maxHttpContentLength));
            ctx.fireChannelRead(msg);
        }
    });

    p.addLast(new UserEventLogger());
}

From source file:example.http2.helloworld.server.Http2ServerInitializer.java

License:Apache License

/**
 * Configure the pipeline for a cleartext upgrade from HTTP to HTTP/2.0
 *//* w  ww . j  a v a 2s.co  m*/
private void configureClearText(SocketChannel ch) {
    final ChannelPipeline p = ch.pipeline();
    final HttpServerCodec sourceCodec = new HttpServerCodec();
    final HttpServerUpgradeHandler upgradeHandler = new HttpServerUpgradeHandler(sourceCodec,
            upgradeCodecFactory);
    final CleartextHttp2ServerUpgradeHandler cleartextHttp2ServerUpgradeHandler = new CleartextHttp2ServerUpgradeHandler(
            sourceCodec, upgradeHandler, new HelloWorldHttp2HandlerBuilder().build());

    p.addLast(cleartextHttp2ServerUpgradeHandler);
    p.addLast(new SimpleChannelInboundHandler<HttpMessage>() {
        @Override
        protected void channelRead0(ChannelHandlerContext ctx, HttpMessage msg) throws Exception {
            // If this handler is hit then no upgrade has been attempted and the client is just talking HTTP.
            System.err.println("Directly talking: " + msg.protocolVersion() + " (no upgrade was attempted)");
            ChannelPipeline pipeline = ctx.pipeline();
            ChannelHandlerContext thisCtx = pipeline.context(this);
            pipeline.addAfter(thisCtx.name(), null,
                    new HelloWorldHttp1Handler("Direct. No Upgrade Attempted."));
            pipeline.replace(this, null, new HttpObjectAggregator(maxHttpContentLength));
            ctx.fireChannelRead(ReferenceCountUtil.retain(msg));
        }
    });

    p.addLast(new UserEventLogger());
}

From source file:http2.server.Http2ServerInitializer.java

License:Apache License

/**
 * Configure the pipeline for a cleartext upgrade from HTTP to HTTP/2.0
 *///from  w  w w . j a va  2  s  . c om
private void configureClearText(SocketChannel ch) {
    final ChannelPipeline p = ch.pipeline();
    final HttpServerCodec sourceCodec = new HttpServerCodec();

    p.addLast(sourceCodec);
    p.addLast(new HttpServerUpgradeHandler(sourceCodec, upgradeCodecFactory));
    // ?
    p.addLast(new SimpleChannelInboundHandler<HttpMessage>() {
        @Override
        protected void channelRead0(ChannelHandlerContext ctx, HttpMessage msg) throws Exception {
            // If this handler is hit then no upgrade has been attempted and the client is just talking HTTP.
            System.err.println("Directly talking: " + msg.protocolVersion() + " (no upgrade was attempted)");
            ChannelPipeline pipeline = ctx.pipeline();
            ChannelHandlerContext thisCtx = pipeline.context(this);
            pipeline.addAfter(thisCtx.name(), null,
                    new HelloWorldHttp1Handler("Direct. No Upgrade Attempted."));
            pipeline.replace(this, null, new HttpObjectAggregator(maxHttpContentLength));
            ctx.fireChannelRead(ReferenceCountUtil.retain(msg));
        }
    });

    p.addLast(new UserEventLogger());
}

From source file:io.netty.example.http2.helloworld.frame.server.Http2ServerInitializer.java

License:Apache License

/**
 * Configure the pipeline for a cleartext upgrade from HTTP to HTTP/2.0
 *///  w  w  w .  ja va 2s.  c o  m
private void configureClearText(SocketChannel ch) {
    final ChannelPipeline p = ch.pipeline();
    final HttpServerCodec sourceCodec = new HttpServerCodec();

    p.addLast(sourceCodec);
    p.addLast(new HttpServerUpgradeHandler(sourceCodec, upgradeCodecFactory));
    p.addLast(new SimpleChannelInboundHandler<HttpMessage>() {
        @Override
        protected void channelRead0(ChannelHandlerContext ctx, HttpMessage msg) throws Exception {
            // If this handler is hit then no upgrade has been attempted and the client is just talking HTTP.
            System.err.println("Directly talking: " + msg.protocolVersion() + " (no upgrade was attempted)");
            ChannelPipeline pipeline = ctx.pipeline();
            pipeline.addAfter(ctx.name(), null, new HelloWorldHttp1Handler("Direct. No Upgrade Attempted."));
            pipeline.replace(this, null, new HttpObjectAggregator(maxHttpContentLength));
            ctx.fireChannelRead(ReferenceCountUtil.retain(msg));
        }
    });

    p.addLast(new UserEventLogger());
}