From f9a65f74920e493768b73af687f3cd217488fdb1 Mon Sep 17 00:00:00 2001 From: redkale Date: Sun, 19 Mar 2023 19:26:11 +0800 Subject: [PATCH] =?UTF-8?q?http=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/redkale/net/http/HttpRender.java | 2 + .../org/redkale/net/http/HttpRequest.java | 2 +- src/main/java/org/redkale/util/ByteArray.java | 64 +++++++++++-------- 3 files changed, 40 insertions(+), 28 deletions(-) diff --git a/src/main/java/org/redkale/net/http/HttpRender.java b/src/main/java/org/redkale/net/http/HttpRender.java index b504b8747..0748e859c 100644 --- a/src/main/java/org/redkale/net/http/HttpRender.java +++ b/src/main/java/org/redkale/net/http/HttpRender.java @@ -13,11 +13,13 @@ import org.redkale.util.*; * HttpRender主要是给HttpResponse.finish(Object obj)提供指定数据类型的输出策略。
*
  * HttpResponse.finish(Object obj)内置对如下数据类型进行了特殊处理:
+ *      CompletionStage
  *      CharSequence/String
  *      byte[]
  *      File
  *      RetResult
  *      HttpResult
+ *      HttpScope
  * 
*

* 如果对其他数据类型有特殊输出的需求,则需要自定义HttpRender。 diff --git a/src/main/java/org/redkale/net/http/HttpRequest.java b/src/main/java/org/redkale/net/http/HttpRequest.java index 85a69b560..01e8ecd32 100644 --- a/src/main/java/org/redkale/net/http/HttpRequest.java +++ b/src/main/java/org/redkale/net/http/HttpRequest.java @@ -641,7 +641,7 @@ public class HttpRequest extends Request { } break; } - bytes.put(b); + bytes.putWithoutCheck(b); } size = bytes.length(); byte[] content = bytes.content(); diff --git a/src/main/java/org/redkale/util/ByteArray.java b/src/main/java/org/redkale/util/ByteArray.java index 52d494fc5..284826d37 100644 --- a/src/main/java/org/redkale/util/ByteArray.java +++ b/src/main/java/org/redkale/util/ByteArray.java @@ -6,9 +6,9 @@ package org.redkale.util; import java.io.*; -import java.nio.ByteBuffer; +import java.nio.*; import java.nio.charset.*; -import java.util.Arrays; +import java.util.*; /** * 简单的byte[]操作类。 @@ -292,31 +292,6 @@ public final class ByteArray implements ByteTuple { System.arraycopy(this.content, 0, buf, 0, count); } - /** - * 将ByteBuffer的内容读取到本对象中 - * - * @param buffer ByteBuffer - */ - public void put(ByteBuffer buffer) { - if (buffer == null) { - return; - } - int remain = buffer.remaining(); - if (remain == 0) { - return; - } - int l = this.content.length - count; - if (remain > l) { - byte[] ns = new byte[this.content.length + remain]; - if (count > 0) { - System.arraycopy(content, 0, ns, 0, count); - } - this.content = ns; - } - buffer.get(content, count, remain); - count += remain; - } - /** * 将array的内容引用给本对象 * @@ -819,6 +794,16 @@ public final class ByteArray implements ByteTuple { return this; } + /** + * 写入一个byte值 + * + * @param value byte值 + * + */ + public void putWithoutCheck(byte value) { + content[count++] = value; + } + /** * 写入一个byte值, content.length 必须不能小于offset+1 * @@ -917,6 +902,31 @@ public final class ByteArray implements ByteTuple { return this; } + /** + * 将ByteBuffer的内容读取到本对象中 + * + * @param buffer ByteBuffer + */ + public void put(ByteBuffer buffer) { + if (buffer == null) { + return; + } + int remain = buffer.remaining(); + if (remain == 0) { + return; + } + int l = this.content.length - count; + if (remain > l) { + byte[] ns = new byte[this.content.length + remain]; + if (count > 0) { + System.arraycopy(content, 0, ns, 0, count); + } + this.content = ns; + } + buffer.get(content, count, remain); + count += remain; + } + /** * 写入ByteArray中的一部分 *