protobuf-nano: use existing class IoUtils for toByteArray (#3437)

protobuf-nano: use existing class IoUtils and force protobuf-nano
to use exact version of internal
This commit is contained in:
zpencer 2017-09-06 07:30:58 -07:00 committed by GitHub
parent 78831690f6
commit 671783f912
2 changed files with 3 additions and 29 deletions

View File

@ -344,7 +344,7 @@ subprojects {
}
}
if (!(project.name in
["grpc-stub", "grpc-protobuf", "grpc-protobuf-lite", "grpc-protobuf-nano", "grpc-thrift"])) {
["grpc-stub", "grpc-protobuf", "grpc-protobuf-lite", "grpc-thrift"])) {
def core = pom.dependencies.find {dep -> dep.artifactId == 'grpc-core'}
if (core != null) {
// Depend on specific version of grpc-core because internal package is unstable

View File

@ -16,16 +16,14 @@
package io.grpc.protobuf.nano;
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.protobuf.nano.CodedInputByteBufferNano;
import com.google.protobuf.nano.MessageNano;
import io.grpc.MethodDescriptor.Marshaller;
import io.grpc.Status;
import java.io.ByteArrayOutputStream;
import io.grpc.internal.IoUtils;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* Utility methods for using nano proto with grpc.
@ -50,7 +48,7 @@ public class NanoUtils {
try {
// TODO(simonma): Investigate whether we can do 0-copy here.
CodedInputByteBufferNano input =
CodedInputByteBufferNano.newInstance(toByteArray(stream));
CodedInputByteBufferNano.newInstance(IoUtils.toByteArray(stream));
input.setSizeLimit(Integer.MAX_VALUE);
T message = factory.newInstance();
message.mergeFrom(input);
@ -62,28 +60,4 @@ public class NanoUtils {
}
};
}
// Copied from guava com.google.common.io.ByteStreams because its API is unstable (beta)
private static byte[] toByteArray(InputStream in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
copy(in, out);
return out.toByteArray();
}
// Copied from guava com.google.common.io.ByteStreams because its API is unstable (beta)
private static long copy(InputStream from, OutputStream to) throws IOException {
checkNotNull(from);
checkNotNull(to);
byte[] buf = new byte[BUF_SIZE];
long total = 0;
while (true) {
int r = from.read(buf);
if (r == -1) {
break;
}
to.write(buf, 0, r);
total += r;
}
return total;
}
}