Improved performance of ProtobufDecoder using array directly when possible (Thanks Ian - iswett@yahoo.com)

This commit is contained in:
Trustin Lee 2010-08-16 05:57:34 +00:00
parent 21db320f0e
commit 4680cd0bb3

View File

@ -97,13 +97,23 @@ public class ProtobufDecoder extends OneToOneDecoder {
return msg; return msg;
} }
if (extensionRegistry == null) { ChannelBuffer buf = (ChannelBuffer) msg;
return prototype.newBuilderForType().mergeFrom( if (buf.hasArray()) {
new ChannelBufferInputStream((ChannelBuffer) msg)).build(); if(extensionRegistry == null) {
return prototype.newBuilderForType().mergeFrom(
buf.array(),buf.arrayOffset(), buf.readableBytes()).build();
} else {
return prototype.newBuilderForType().mergeFrom(
buf.array(), buf.arrayOffset(), buf.readableBytes(), extensionRegistry).build();
}
} else { } else {
return prototype.newBuilderForType().mergeFrom( if (extensionRegistry == null) {
new ChannelBufferInputStream((ChannelBuffer) msg), return prototype.newBuilderForType().mergeFrom(
extensionRegistry).build(); new ChannelBufferInputStream((ChannelBuffer) msg)).build();
} else {
return prototype.newBuilderForType().mergeFrom(
new ChannelBufferInputStream((ChannelBuffer) msg), extensionRegistry).build();
}
} }
} }
} }