From 588e1eca90b85a4a92ee6020bb8a5c1b68db2a11 Mon Sep 17 00:00:00 2001 From: redkale Date: Mon, 9 Sep 2024 12:38:13 +0800 Subject: [PATCH] SncpRequest --- .../java/org/redkale/net/sncp/SncpDispatcherServlet.java | 4 +--- src/main/java/org/redkale/net/sncp/SncpRequest.java | 9 +++++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/redkale/net/sncp/SncpDispatcherServlet.java b/src/main/java/org/redkale/net/sncp/SncpDispatcherServlet.java index 841411ac1..723d00dca 100644 --- a/src/main/java/org/redkale/net/sncp/SncpDispatcherServlet.java +++ b/src/main/java/org/redkale/net/sncp/SncpDispatcherServlet.java @@ -22,8 +22,6 @@ public class SncpDispatcherServlet private final ReentrantLock updateLock = new ReentrantLock(); - private final ThreadLocal localArray = Utility.withInitialThreadLocal(ByteArray::new); - protected SncpDispatcherServlet() { super(); } @@ -84,7 +82,7 @@ public class SncpDispatcherServlet public void execute(SncpRequest request, SncpResponse response) throws IOException { try { if (request.isPing()) { - ByteArray array = localArray.get().clear(); + ByteArray array = request.getTempByteArray(); int headerSize = SncpHeader.calcHeaderSize(request); array.putPlaceholder(headerSize); response.writeHeader(array, 0, 0); diff --git a/src/main/java/org/redkale/net/sncp/SncpRequest.java b/src/main/java/org/redkale/net/sncp/SncpRequest.java index 29d804b88..677f938e4 100644 --- a/src/main/java/org/redkale/net/sncp/SncpRequest.java +++ b/src/main/java/org/redkale/net/sncp/SncpRequest.java @@ -9,6 +9,7 @@ import java.io.Serializable; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.Objects; +import java.util.function.Function; import java.util.logging.Level; import org.redkale.convert.*; import org.redkale.convert.bson.BsonReader; @@ -31,6 +32,10 @@ public class SncpRequest extends Request { protected static final int READ_STATE_END = 4; + private static final String tbaName = "_tba"; + + private static final Function tbaFunc = s -> new ByteArray(); + protected final BsonReader reader = new BsonReader(); protected int readState = READ_STATE_ROUTE; @@ -215,4 +220,8 @@ public class SncpRequest extends Request { public SncpHeader getHeader() { return header; } + + public ByteArray getTempByteArray() { + return getSubobjectIfAbsent(tbaName, tbaFunc).clear(); + } }