From 29f6524d14d755a4a7a73eeeb29d3c5a2cf994ca Mon Sep 17 00:00:00 2001 From: atomicint Date: Fri, 27 Mar 2015 16:42:55 -0400 Subject: [PATCH] Rebase OnDemandRequestWorker#service(T, Channel, V) --- .../apollo/update/OnDemandRequestWorker.java | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/src/org/apollo/update/OnDemandRequestWorker.java b/src/org/apollo/update/OnDemandRequestWorker.java index 7a28a0a8..dc327d30 100644 --- a/src/org/apollo/update/OnDemandRequestWorker.java +++ b/src/org/apollo/update/OnDemandRequestWorker.java @@ -5,9 +5,7 @@ import io.netty.buffer.Unpooled; import io.netty.channel.Channel; import java.io.IOException; -import java.nio.ByteBuffer; -import org.apollo.fs.FileDescriptor; import org.apollo.fs.IndexedFileSystem; import org.apollo.net.codec.update.OnDemandRequest; import org.apollo.net.codec.update.OnDemandResponse; @@ -20,7 +18,7 @@ import org.apollo.net.codec.update.OnDemandResponse; public final class OnDemandRequestWorker extends RequestWorker { /** - * The maximum length of a chunk, in bytes. + * The maximum length of a chunk, in {@code byte}s. */ private static final int CHUNK_LENGTH = 500; @@ -41,22 +39,12 @@ public final class OnDemandRequestWorker extends RequestWorker 0; chunk++) { - int chunkSize = buffer.remaining(); - if (chunkSize > CHUNK_LENGTH) { - chunkSize = CHUNK_LENGTH; - } - - byte[] tmp = new byte[chunkSize]; - buffer.get(tmp, 0, tmp.length); - ByteBuf chunkData = Unpooled.wrappedBuffer(tmp, 0, chunkSize); - - OnDemandResponse response = new OnDemandResponse(desc, length, chunk, chunkData); + for (int chunk = 0; buffer.readableBytes() > 0; chunk++) { + int chunkSize = Math.min(buffer.readableBytes(), CHUNK_LENGTH); + OnDemandResponse response = new OnDemandResponse(request.getFileDescriptor(), length, chunk, buffer.readBytes(chunkSize)); channel.writeAndFlush(response); } }