diff --git a/src/org/redkale/convert/bson/BsonByteBufferWriter.java b/src/org/redkale/convert/bson/BsonByteBufferWriter.java index 4bcb36c9d..2135f2334 100644 --- a/src/org/redkale/convert/bson/BsonByteBufferWriter.java +++ b/src/org/redkale/convert/bson/BsonByteBufferWriter.java @@ -35,8 +35,12 @@ public class BsonByteBufferWriter extends BsonWriter { this.supplier = supplier; } - @Override public ByteBuffer[] toBuffers() { + return toBuffers(supplier); + } + + @Override + public ByteBuffer[] toBuffers(Supplier supplier) { if (buffers == null) return new ByteBuffer[0]; for (int i = index; i < this.buffers.length; i++) { ByteBuffer buf = this.buffers[i]; diff --git a/src/org/redkale/convert/bson/BsonWriter.java b/src/org/redkale/convert/bson/BsonWriter.java index 47f064bdc..ad370f86d 100644 --- a/src/org/redkale/convert/bson/BsonWriter.java +++ b/src/org/redkale/convert/bson/BsonWriter.java @@ -6,6 +6,7 @@ package org.redkale.convert.bson; import java.nio.ByteBuffer; +import java.util.function.Supplier; import org.redkale.convert.*; import org.redkale.util.*; @@ -37,8 +38,8 @@ public class BsonWriter extends Writer { return newdata; } - public ByteBuffer[] toBuffers() { - return new ByteBuffer[]{ByteBuffer.wrap(content, 0, count)}; + public ByteBuffer[] toBuffers(final Supplier supplier) { + return ByteBufferWriter.create(supplier).put(content, 0, count).toBuffers(); } protected BsonWriter(byte[] bs) { diff --git a/src/org/redkale/net/sncp/SncpClient.java b/src/org/redkale/net/sncp/SncpClient.java index 05db0006c..c39e48e39 100644 --- a/src/org/redkale/net/sncp/SncpClient.java +++ b/src/org/redkale/net/sncp/SncpClient.java @@ -367,7 +367,7 @@ public final class SncpClient { return future; } final AsyncConnection conn = conn0; - final ByteBuffer[] sendBuffers = writer.toBuffers(); + final ByteBuffer[] sendBuffers = writer.toBuffers(transport.getBufferSupplier()); fillHeader(sendBuffers[0], seqid, actionid, reqBodyLength); final ByteBuffer buffer = transport.pollBuffer(); diff --git a/src/org/redkale/net/sncp/SncpResponse.java b/src/org/redkale/net/sncp/SncpResponse.java index 3938e925f..fde0c4b41 100644 --- a/src/org/redkale/net/sncp/SncpResponse.java +++ b/src/org/redkale/net/sncp/SncpResponse.java @@ -65,7 +65,7 @@ public final class SncpResponse extends Response { return; } final int respBodyLength = out.count(); //body总长度 - final ByteBuffer[] buffers = out.toBuffers(); + final ByteBuffer[] buffers = out.toBuffers(context.getBufferSupplier()); fillHeader(buffers[0], respBodyLength - HEADER_SIZE, retcode); finish(buffers); }