mirror of https://github.com/grpc/grpc-java.git
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:
parent
78831690f6
commit
671783f912
|
|
@ -344,7 +344,7 @@ subprojects {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!(project.name in
|
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'}
|
def core = pom.dependencies.find {dep -> dep.artifactId == 'grpc-core'}
|
||||||
if (core != null) {
|
if (core != null) {
|
||||||
// Depend on specific version of grpc-core because internal package is unstable
|
// Depend on specific version of grpc-core because internal package is unstable
|
||||||
|
|
|
||||||
|
|
@ -16,16 +16,14 @@
|
||||||
|
|
||||||
package io.grpc.protobuf.nano;
|
package io.grpc.protobuf.nano;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
|
||||||
|
|
||||||
import com.google.protobuf.nano.CodedInputByteBufferNano;
|
import com.google.protobuf.nano.CodedInputByteBufferNano;
|
||||||
import com.google.protobuf.nano.MessageNano;
|
import com.google.protobuf.nano.MessageNano;
|
||||||
import io.grpc.MethodDescriptor.Marshaller;
|
import io.grpc.MethodDescriptor.Marshaller;
|
||||||
import io.grpc.Status;
|
import io.grpc.Status;
|
||||||
import java.io.ByteArrayOutputStream;
|
import io.grpc.internal.IoUtils;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility methods for using nano proto with grpc.
|
* Utility methods for using nano proto with grpc.
|
||||||
|
|
@ -50,7 +48,7 @@ public class NanoUtils {
|
||||||
try {
|
try {
|
||||||
// TODO(simonma): Investigate whether we can do 0-copy here.
|
// TODO(simonma): Investigate whether we can do 0-copy here.
|
||||||
CodedInputByteBufferNano input =
|
CodedInputByteBufferNano input =
|
||||||
CodedInputByteBufferNano.newInstance(toByteArray(stream));
|
CodedInputByteBufferNano.newInstance(IoUtils.toByteArray(stream));
|
||||||
input.setSizeLimit(Integer.MAX_VALUE);
|
input.setSizeLimit(Integer.MAX_VALUE);
|
||||||
T message = factory.newInstance();
|
T message = factory.newInstance();
|
||||||
message.mergeFrom(input);
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue