From 29ce57d3af744c89e4323b35485aa44957a202b6 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Mon, 27 Aug 2018 12:07:45 +0800 Subject: [PATCH] =?UTF-8?q?BsonWriter.toBuffers=E5=AD=98=E5=9C=A8=E5=B9=B6?= =?UTF-8?q?=E5=8F=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/convert/bson/BsonByteBufferWriter.java | 6 +++++- src/org/redkale/convert/bson/BsonWriter.java | 5 +++-- src/org/redkale/net/sncp/SncpClient.java | 2 +- src/org/redkale/net/sncp/SncpResponse.java | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) 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); }