Java 类io.netty.handler.codec.http.EmptyHttpHeaders 实例源码

项目:xio    文件:HttpsUpgradeHandler.java   
@Override
public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
  List<ByteBuf> payload;

  HttpHeaders headers = new CombinedHttpHeaders(true);
  headers.add(HttpHeaderNames.UPGRADE, "TLS/1.2");
  headers.add(HttpHeaderNames.UPGRADE, HTTP_1_1);
  headers.add(HttpHeaderNames.CONNECTION, HttpHeaderValues.UPGRADE);
  headers.add(HttpHeaderNames.CONNECTION, HttpHeaderValues.CLOSE);
  headers.add(HttpHeaderNames.CONTENT_LENGTH, "0");
  DefaultFullHttpResponse response =
      new DefaultFullHttpResponse(
          HTTP_1_1, UPGRADE_REQUIRED, Unpooled.EMPTY_BUFFER, headers, EmptyHttpHeaders.INSTANCE);
  payload = Recipes.encodeResponse(response);

  for (ByteBuf buffer : payload) {
    ctx.write(buffer.copy());
  }
  ctx.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);
}
项目:jooby    文件:NettyPush.java   
@Override
public void push(final String method, final String path, final Map<String, Object> headers) {
  ctx.channel().eventLoop().execute(() -> {
    AsciiString streamIdHeader = HttpConversionUtil.ExtensionHeaderNames.STREAM_ID.text();
    Http2Connection connection = encoder.connection();
    int nextStreamId = connection.local().incrementAndGetNextStreamId();
    Http2Headers h2headers = new DefaultHttp2Headers()
        .path(path)
        .method(method)
        .authority(authority)
        .scheme(scheme);
    headers.forEach((n, v) -> h2headers.add(n, v.toString()));
    encoder.writePushPromise(ctx, streamId, nextStreamId, h2headers, 0, ctx.newPromise());

    // TODO: Is there another way of handling a push promise?
    DefaultFullHttpRequest pushRequest = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1,
        HttpMethod.valueOf(method.toUpperCase()), path, Unpooled.EMPTY_BUFFER,
        new DefaultHttpHeaders(false).set(streamIdHeader, nextStreamId),
        EmptyHttpHeaders.INSTANCE);
    ctx.pipeline().fireChannelRead(pushRequest);
    ctx.pipeline().fireChannelReadComplete();
  });
}
项目:xio    文件:Http1ClientCodec.java   
HttpRequest buildRequest(ChannelHandlerContext ctx, Request request) {
  if (!request.headers().contains(HttpHeaderNames.CONTENT_TYPE)) {
    request.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/plain; charset=UTF-8");
  }

  if (request.keepAlive()) {
    request.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
  }

  if (request instanceof FullRequest) {
    FullRequest full = (FullRequest) request;
    ByteBuf content;
    if (full.body() != null) {
      content = full.body();
    } else {
      content = Unpooled.EMPTY_BUFFER;
    }
    if (!full.headers().contains(HttpHeaderNames.CONTENT_LENGTH)) {
      full.headers().setInt(HttpHeaderNames.CONTENT_LENGTH, content.readableBytes());
    }

    // Request request = getChannelRequest(ctx);

    // setChannelResponse(ctx, null);

    return new DefaultFullHttpRequest(
        HttpVersion.HTTP_1_1,
        full.method(),
        full.path(),
        content,
        full.headers().http1Headers(false, true),
        EmptyHttpHeaders.INSTANCE);
  } else {
    // TODO(CK): TransferEncoding
    return new DefaultHttpRequest(
        HttpVersion.HTTP_1_1,
        request.method(),
        request.path(),
        request.headers().http1Headers(false, true));
  }
}
项目:xio    文件:Http1ServerCodec.java   
HttpResponse buildResponse(ChannelHandlerContext ctx, Response response) {
  if (!response.headers().contains(HttpHeaderNames.CONTENT_TYPE)) {
    response.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/plain; charset=UTF-8");
  }

  Request request = getChannelRequest(ctx);
  if (request.keepAlive()) {
    response.headers().set(HttpHeaderNames.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
  }

  if (response instanceof FullResponse) {
    FullResponse full = (FullResponse) response;
    ByteBuf content;
    if (full.body() != null) {
      content = full.body();
    } else {
      content = Unpooled.EMPTY_BUFFER;
    }
    if (!full.headers().contains(HttpHeaderNames.CONTENT_LENGTH)) {
      full.headers().setInt(HttpHeaderNames.CONTENT_LENGTH, content.readableBytes());
    }

    setChannelRequest(ctx, null);

    return new DefaultFullHttpResponse(
        HttpVersion.HTTP_1_1,
        full.status(),
        content,
        full.headers().http1Headers(false, false),
        EmptyHttpHeaders.INSTANCE);
  } else {
    // TODO(CK): TransferEncoding
    // We don't know the size of the message payload so set TransferEncoding to chunked
    if (!response.headers().contains(HttpHeaderNames.TRANSFER_ENCODING)) {
      response.headers().set(HttpHeaderNames.TRANSFER_ENCODING, HttpHeaderValues.CHUNKED);
    }

    return new DefaultHttpResponse(
        HttpVersion.HTTP_1_1, response.status(), response.headers().http1Headers(false, false));
  }
}