io.grpc.Metadata#BinaryMarshaller ( )源码实例Demo

下面列出了io.grpc.Metadata#BinaryMarshaller ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: grpc-java-contrib   文件: MoreMetadata.java
/**
 * A metadata marshaller that encodes objects as protobuf according to their proto IDL specification.
 *
 * @param clazz the type to serialize
 * @param <T>
 */
public static <T extends GeneratedMessageV3> Metadata.BinaryMarshaller<T> PROTOBUF_MARSHALLER(Class<T> clazz) {
    try {
        Method defaultInstance = clazz.getMethod("getDefaultInstance");
        GeneratedMessageV3 instance = (GeneratedMessageV3) defaultInstance.invoke(null);

        return new Metadata.BinaryMarshaller<T>() {
            @Override
            public byte[] toBytes(T value) {
                return value.toByteArray();
            }

            @SuppressWarnings("unchecked")
            @Override
            public T parseBytes(byte[] serialized) {
                try {
                    return (T) instance.getParserForType().parseFrom(serialized);
                } catch (InvalidProtocolBufferException ipbe) {
                    throw new IllegalArgumentException(ipbe);
                }
            }
        };
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ex) {
        throw new IllegalStateException(ex);
    }
}
 
源代码2 项目: grpc-nebula-java   文件: ProtoLiteUtilsTest.java
@Test
public void metadataMarshaller_invalid() {
  Metadata.BinaryMarshaller<Type> metadataMarshaller =
      ProtoLiteUtils.metadataMarshaller(Type.getDefaultInstance());
  try {
    metadataMarshaller.parseBytes(new byte[] {-127});
    fail("Expected exception");
  } catch (IllegalArgumentException ex) {
    assertNotNull(((InvalidProtocolBufferException) ex.getCause()).getUnfinishedMessage());
  }
}
 
源代码3 项目: saluki   文件: GrpcUtil.java
private static Metadata.BinaryMarshaller<String> utf8Marshaller() {
  return new Metadata.BinaryMarshaller<String>() {

    @Override
    public byte[] toBytes(String value) {
      return value.getBytes(Charsets.UTF_8);
    }

    @Override
    public String parseBytes(byte[] serialized) {
      return new String(serialized, Charsets.UTF_8);
    }
  };
}
 
源代码4 项目: grpc-java-contrib   文件: MoreMetadataTest.java
@Test
public void protobufMarshallerRoundtrip() {
    HelloRequest request = HelloRequest.newBuilder().setName("World").build();

    Metadata.BinaryMarshaller<HelloRequest> marshaller = MoreMetadata.PROTOBUF_MARSHALLER(HelloRequest.class);
    byte[] bytes = marshaller.toBytes(request);
    HelloRequest request2 = marshaller.parseBytes(bytes);

    assertThat(request2).isEqualTo(request);
}
 
源代码5 项目: grpc-java   文件: ProtoLiteUtilsTest.java
@Test
public void metadataMarshaller_invalid() {
  Metadata.BinaryMarshaller<Type> metadataMarshaller =
      ProtoLiteUtils.metadataMarshaller(Type.getDefaultInstance());
  try {
    metadataMarshaller.parseBytes(new byte[] {-127});
    fail("Expected exception");
  } catch (IllegalArgumentException ex) {
    assertNotNull(((InvalidProtocolBufferException) ex.getCause()).getUnfinishedMessage());
  }
}
 
源代码6 项目: grpc-nebula-java   文件: ProtoLiteUtilsTest.java
@Test
public void metadataMarshaller_roundtrip() {
  Metadata.BinaryMarshaller<Type> metadataMarshaller =
      ProtoLiteUtils.metadataMarshaller(Type.getDefaultInstance());
  assertEquals(proto, metadataMarshaller.parseBytes(metadataMarshaller.toBytes(proto)));
}
 
源代码7 项目: grpc-java   文件: ProtoLiteUtilsTest.java
@Test
public void metadataMarshaller_roundtrip() {
  Metadata.BinaryMarshaller<Type> metadataMarshaller =
      ProtoLiteUtils.metadataMarshaller(Type.getDefaultInstance());
  assertEquals(proto, metadataMarshaller.parseBytes(metadataMarshaller.toBytes(proto)));
}
 
源代码8 项目: grpc-nebula-java   文件: ProtoUtils.java
/**
 * Produce a metadata marshaller for a protobuf type.
 * 
 * @since 1.13.0
 */
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/4477")
public static <T extends Message> Metadata.BinaryMarshaller<T> metadataMarshaller(T instance) {
  return ProtoLiteUtils.metadataMarshaller(instance);
}
 
源代码9 项目: grpc-nebula-java   文件: ProtoLiteUtils.java
/**
 * Produce a metadata marshaller for a protobuf type.
 *
 * @since 1.0.0
 */
public static <T extends MessageLite> Metadata.BinaryMarshaller<T> metadataMarshaller(
    T defaultInstance) {
  return new MetadataMarshaller<T>(defaultInstance);
}
 
源代码10 项目: grpc-java   文件: ProtoUtils.java
/**
 * Produce a metadata marshaller for a protobuf type.
 * 
 * @since 1.13.0
 */
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/4477")
public static <T extends Message> Metadata.BinaryMarshaller<T> metadataMarshaller(T instance) {
  return ProtoLiteUtils.metadataMarshaller(instance);
}
 
源代码11 项目: grpc-java   文件: ProtoLiteUtils.java
/**
 * Produce a metadata marshaller for a protobuf type.
 *
 * @since 1.0.0
 */
public static <T extends MessageLite> Metadata.BinaryMarshaller<T> metadataMarshaller(
    T defaultInstance) {
  return new MetadataMarshaller<>(defaultInstance);
}