aboutsummaryrefslogtreecommitdiff
path: root/services
diff options
context:
space:
mode:
authorzpencer <spencerfang@google.com>2018-09-27 13:19:24 -0700
committerGitHub <noreply@github.com>2018-09-27 13:19:24 -0700
commitda87ffb329f70d907a010dbda0bd655dda8f1cc8 (patch)
tree26ac04bb30b2d015dee69af54ffe54b35a0ec3d9 /services
parent69bb8a37f85fa07be418704ffb25573c133c0a4f (diff)
downloadgrpc-grpc-java-da87ffb329f70d907a010dbda0bd655dda8f1cc8.tar.gz
core,services: v1 binlog (#4846)
Log using new proto definition - Remove io.grpc.BinaryLog.CallId because a call ID is now an AtomicLong - Add the concept of "always included" and "never included" metadata keys. This is needed because grpc-status-details-bin is already logged in the binlog msg, and we will log grpc-trace-bin for the census info. - unit tests are effectively rewritten
Diffstat (limited to 'services')
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/Address.java823
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/AddressOrBuilder.java37
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/BinaryLogProto.java177
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/ClientHeader.java1199
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/ClientHeaderOrBuilder.java107
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/GrpcLogEntry.java2629
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/GrpcLogEntryOrBuilder.java197
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/Message.java552
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/MessageOrBuilder.java28
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/Metadata.java778
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/MetadataEntry.java585
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/MetadataEntryOrBuilder.java24
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/MetadataOrBuilder.java33
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/ServerHeader.java618
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/ServerHeaderOrBuilder.java34
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/Trailer.java935
-rw-r--r--services/src/generated/main/java/io/grpc/binarylog/v1/TrailerOrBuilder.java73
-rw-r--r--services/src/main/java/io/grpc/services/BinaryLogProviderImpl.java16
-rw-r--r--services/src/main/java/io/grpc/services/BinlogHelper.java590
-rw-r--r--services/src/main/proto/grpc/binlog/v1/binarylog.proto209
-rw-r--r--services/src/test/java/io/grpc/services/BinlogHelperTest.java1160
21 files changed, 10113 insertions, 691 deletions
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/Address.java b/services/src/generated/main/java/io/grpc/binarylog/v1/Address.java
new file mode 100644
index 000000000..c4c64a498
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/Address.java
@@ -0,0 +1,823 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+/**
+ * <pre>
+ * Address information
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.Address}
+ */
+public final class Address extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:grpc.binarylog.v1.Address)
+ AddressOrBuilder {
+private static final long serialVersionUID = 0L;
+ // Use Address.newBuilder() to construct.
+ private Address(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private Address() {
+ type_ = 0;
+ address_ = "";
+ ipPort_ = 0;
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Address(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 8: {
+ int rawValue = input.readEnum();
+
+ type_ = rawValue;
+ break;
+ }
+ case 18: {
+ java.lang.String s = input.readStringRequireUtf8();
+
+ address_ = s;
+ break;
+ }
+ case 24: {
+
+ ipPort_ = input.readUInt32();
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Address_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Address_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.Address.class, io.grpc.binarylog.v1.Address.Builder.class);
+ }
+
+ /**
+ * Protobuf enum {@code grpc.binarylog.v1.Address.Type}
+ */
+ public enum Type
+ implements com.google.protobuf.ProtocolMessageEnum {
+ /**
+ * <code>TYPE_UNKNOWN = 0;</code>
+ */
+ TYPE_UNKNOWN(0),
+ /**
+ * <pre>
+ * address is in 1.2.3.4 form
+ * </pre>
+ *
+ * <code>TYPE_IPV4 = 1;</code>
+ */
+ TYPE_IPV4(1),
+ /**
+ * <pre>
+ * address is in IPv6 canonical form (RFC5952 section 4)
+ * The scope is NOT included in the address string.
+ * </pre>
+ *
+ * <code>TYPE_IPV6 = 2;</code>
+ */
+ TYPE_IPV6(2),
+ /**
+ * <pre>
+ * address is UDS string
+ * </pre>
+ *
+ * <code>TYPE_UNIX = 3;</code>
+ */
+ TYPE_UNIX(3),
+ UNRECOGNIZED(-1),
+ ;
+
+ /**
+ * <code>TYPE_UNKNOWN = 0;</code>
+ */
+ public static final int TYPE_UNKNOWN_VALUE = 0;
+ /**
+ * <pre>
+ * address is in 1.2.3.4 form
+ * </pre>
+ *
+ * <code>TYPE_IPV4 = 1;</code>
+ */
+ public static final int TYPE_IPV4_VALUE = 1;
+ /**
+ * <pre>
+ * address is in IPv6 canonical form (RFC5952 section 4)
+ * The scope is NOT included in the address string.
+ * </pre>
+ *
+ * <code>TYPE_IPV6 = 2;</code>
+ */
+ public static final int TYPE_IPV6_VALUE = 2;
+ /**
+ * <pre>
+ * address is UDS string
+ * </pre>
+ *
+ * <code>TYPE_UNIX = 3;</code>
+ */
+ public static final int TYPE_UNIX_VALUE = 3;
+
+
+ public final int getNumber() {
+ if (this == UNRECOGNIZED) {
+ throw new java.lang.IllegalArgumentException(
+ "Can't get the number of an unknown enum value.");
+ }
+ return value;
+ }
+
+ /**
+ * @deprecated Use {@link #forNumber(int)} instead.
+ */
+ @java.lang.Deprecated
+ public static Type valueOf(int value) {
+ return forNumber(value);
+ }
+
+ public static Type forNumber(int value) {
+ switch (value) {
+ case 0: return TYPE_UNKNOWN;
+ case 1: return TYPE_IPV4;
+ case 2: return TYPE_IPV6;
+ case 3: return TYPE_UNIX;
+ default: return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap<Type>
+ internalGetValueMap() {
+ return internalValueMap;
+ }
+ private static final com.google.protobuf.Internal.EnumLiteMap<
+ Type> internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap<Type>() {
+ public Type findValueByNumber(int number) {
+ return Type.forNumber(number);
+ }
+ };
+
+ public final com.google.protobuf.Descriptors.EnumValueDescriptor
+ getValueDescriptor() {
+ return getDescriptor().getValues().get(ordinal());
+ }
+ public final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptorForType() {
+ return getDescriptor();
+ }
+ public static final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.Address.getDescriptor().getEnumTypes().get(0);
+ }
+
+ private static final Type[] VALUES = values();
+
+ public static Type valueOf(
+ com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+ if (desc.getType() != getDescriptor()) {
+ throw new java.lang.IllegalArgumentException(
+ "EnumValueDescriptor is not for this type.");
+ }
+ if (desc.getIndex() == -1) {
+ return UNRECOGNIZED;
+ }
+ return VALUES[desc.getIndex()];
+ }
+
+ private final int value;
+
+ private Type(int value) {
+ this.value = value;
+ }
+
+ // @@protoc_insertion_point(enum_scope:grpc.binarylog.v1.Address.Type)
+ }
+
+ public static final int TYPE_FIELD_NUMBER = 1;
+ private int type_;
+ /**
+ * <code>.grpc.binarylog.v1.Address.Type type = 1;</code>
+ */
+ public int getTypeValue() {
+ return type_;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Address.Type type = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Address.Type getType() {
+ io.grpc.binarylog.v1.Address.Type result = io.grpc.binarylog.v1.Address.Type.valueOf(type_);
+ return result == null ? io.grpc.binarylog.v1.Address.Type.UNRECOGNIZED : result;
+ }
+
+ public static final int ADDRESS_FIELD_NUMBER = 2;
+ private volatile java.lang.Object address_;
+ /**
+ * <code>string address = 2;</code>
+ */
+ public java.lang.String getAddress() {
+ java.lang.Object ref = address_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ address_ = s;
+ return s;
+ }
+ }
+ /**
+ * <code>string address = 2;</code>
+ */
+ public com.google.protobuf.ByteString
+ getAddressBytes() {
+ java.lang.Object ref = address_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ address_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int IP_PORT_FIELD_NUMBER = 3;
+ private int ipPort_;
+ /**
+ * <pre>
+ * only for TYPE_IPV4 and TYPE_IPV6
+ * </pre>
+ *
+ * <code>uint32 ip_port = 3;</code>
+ */
+ public int getIpPort() {
+ return ipPort_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (type_ != io.grpc.binarylog.v1.Address.Type.TYPE_UNKNOWN.getNumber()) {
+ output.writeEnum(1, type_);
+ }
+ if (!getAddressBytes().isEmpty()) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 2, address_);
+ }
+ if (ipPort_ != 0) {
+ output.writeUInt32(3, ipPort_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (type_ != io.grpc.binarylog.v1.Address.Type.TYPE_UNKNOWN.getNumber()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeEnumSize(1, type_);
+ }
+ if (!getAddressBytes().isEmpty()) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, address_);
+ }
+ if (ipPort_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt32Size(3, ipPort_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof io.grpc.binarylog.v1.Address)) {
+ return super.equals(obj);
+ }
+ io.grpc.binarylog.v1.Address other = (io.grpc.binarylog.v1.Address) obj;
+
+ boolean result = true;
+ result = result && type_ == other.type_;
+ result = result && getAddress()
+ .equals(other.getAddress());
+ result = result && (getIpPort()
+ == other.getIpPort());
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + TYPE_FIELD_NUMBER;
+ hash = (53 * hash) + type_;
+ hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
+ hash = (53 * hash) + getAddress().hashCode();
+ hash = (37 * hash) + IP_PORT_FIELD_NUMBER;
+ hash = (53 * hash) + getIpPort();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static io.grpc.binarylog.v1.Address parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Address parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Address parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Address parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Address parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Address parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Address parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Address parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Address parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Address parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Address parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Address parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(io.grpc.binarylog.v1.Address prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * <pre>
+ * Address information
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.Address}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:grpc.binarylog.v1.Address)
+ io.grpc.binarylog.v1.AddressOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Address_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Address_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.Address.class, io.grpc.binarylog.v1.Address.Builder.class);
+ }
+
+ // Construct using io.grpc.binarylog.v1.Address.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ type_ = 0;
+
+ address_ = "";
+
+ ipPort_ = 0;
+
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Address_descriptor;
+ }
+
+ public io.grpc.binarylog.v1.Address getDefaultInstanceForType() {
+ return io.grpc.binarylog.v1.Address.getDefaultInstance();
+ }
+
+ public io.grpc.binarylog.v1.Address build() {
+ io.grpc.binarylog.v1.Address result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public io.grpc.binarylog.v1.Address buildPartial() {
+ io.grpc.binarylog.v1.Address result = new io.grpc.binarylog.v1.Address(this);
+ result.type_ = type_;
+ result.address_ = address_;
+ result.ipPort_ = ipPort_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof io.grpc.binarylog.v1.Address) {
+ return mergeFrom((io.grpc.binarylog.v1.Address)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(io.grpc.binarylog.v1.Address other) {
+ if (other == io.grpc.binarylog.v1.Address.getDefaultInstance()) return this;
+ if (other.type_ != 0) {
+ setTypeValue(other.getTypeValue());
+ }
+ if (!other.getAddress().isEmpty()) {
+ address_ = other.address_;
+ onChanged();
+ }
+ if (other.getIpPort() != 0) {
+ setIpPort(other.getIpPort());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ io.grpc.binarylog.v1.Address parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (io.grpc.binarylog.v1.Address) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private int type_ = 0;
+ /**
+ * <code>.grpc.binarylog.v1.Address.Type type = 1;</code>
+ */
+ public int getTypeValue() {
+ return type_;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Address.Type type = 1;</code>
+ */
+ public Builder setTypeValue(int value) {
+ type_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Address.Type type = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Address.Type getType() {
+ io.grpc.binarylog.v1.Address.Type result = io.grpc.binarylog.v1.Address.Type.valueOf(type_);
+ return result == null ? io.grpc.binarylog.v1.Address.Type.UNRECOGNIZED : result;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Address.Type type = 1;</code>
+ */
+ public Builder setType(io.grpc.binarylog.v1.Address.Type value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ type_ = value.getNumber();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Address.Type type = 1;</code>
+ */
+ public Builder clearType() {
+
+ type_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object address_ = "";
+ /**
+ * <code>string address = 2;</code>
+ */
+ public java.lang.String getAddress() {
+ java.lang.Object ref = address_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ address_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>string address = 2;</code>
+ */
+ public com.google.protobuf.ByteString
+ getAddressBytes() {
+ java.lang.Object ref = address_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ address_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>string address = 2;</code>
+ */
+ public Builder setAddress(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ address_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>string address = 2;</code>
+ */
+ public Builder clearAddress() {
+
+ address_ = getDefaultInstance().getAddress();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>string address = 2;</code>
+ */
+ public Builder setAddressBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ address_ = value;
+ onChanged();
+ return this;
+ }
+
+ private int ipPort_ ;
+ /**
+ * <pre>
+ * only for TYPE_IPV4 and TYPE_IPV6
+ * </pre>
+ *
+ * <code>uint32 ip_port = 3;</code>
+ */
+ public int getIpPort() {
+ return ipPort_;
+ }
+ /**
+ * <pre>
+ * only for TYPE_IPV4 and TYPE_IPV6
+ * </pre>
+ *
+ * <code>uint32 ip_port = 3;</code>
+ */
+ public Builder setIpPort(int value) {
+
+ ipPort_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * only for TYPE_IPV4 and TYPE_IPV6
+ * </pre>
+ *
+ * <code>uint32 ip_port = 3;</code>
+ */
+ public Builder clearIpPort() {
+
+ ipPort_ = 0;
+ onChanged();
+ return this;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:grpc.binarylog.v1.Address)
+ }
+
+ // @@protoc_insertion_point(class_scope:grpc.binarylog.v1.Address)
+ private static final io.grpc.binarylog.v1.Address DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new io.grpc.binarylog.v1.Address();
+ }
+
+ public static io.grpc.binarylog.v1.Address getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<Address>
+ PARSER = new com.google.protobuf.AbstractParser<Address>() {
+ public Address parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Address(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<Address> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<Address> getParserForType() {
+ return PARSER;
+ }
+
+ public io.grpc.binarylog.v1.Address getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/AddressOrBuilder.java b/services/src/generated/main/java/io/grpc/binarylog/v1/AddressOrBuilder.java
new file mode 100644
index 000000000..7bb915871
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/AddressOrBuilder.java
@@ -0,0 +1,37 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+public interface AddressOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:grpc.binarylog.v1.Address)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <code>.grpc.binarylog.v1.Address.Type type = 1;</code>
+ */
+ int getTypeValue();
+ /**
+ * <code>.grpc.binarylog.v1.Address.Type type = 1;</code>
+ */
+ io.grpc.binarylog.v1.Address.Type getType();
+
+ /**
+ * <code>string address = 2;</code>
+ */
+ java.lang.String getAddress();
+ /**
+ * <code>string address = 2;</code>
+ */
+ com.google.protobuf.ByteString
+ getAddressBytes();
+
+ /**
+ * <pre>
+ * only for TYPE_IPV4 and TYPE_IPV6
+ * </pre>
+ *
+ * <code>uint32 ip_port = 3;</code>
+ */
+ int getIpPort();
+}
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/BinaryLogProto.java b/services/src/generated/main/java/io/grpc/binarylog/v1/BinaryLogProto.java
new file mode 100644
index 000000000..271d14115
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/BinaryLogProto.java
@@ -0,0 +1,177 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+public final class BinaryLogProto {
+ private BinaryLogProto() {}
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistryLite registry) {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ registerAllExtensions(
+ (com.google.protobuf.ExtensionRegistryLite) registry);
+ }
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_grpc_binarylog_v1_GrpcLogEntry_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_grpc_binarylog_v1_GrpcLogEntry_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_grpc_binarylog_v1_ClientHeader_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_grpc_binarylog_v1_ClientHeader_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_grpc_binarylog_v1_ServerHeader_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_grpc_binarylog_v1_ServerHeader_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_grpc_binarylog_v1_Trailer_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_grpc_binarylog_v1_Trailer_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_grpc_binarylog_v1_Message_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_grpc_binarylog_v1_Message_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_grpc_binarylog_v1_Metadata_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_grpc_binarylog_v1_Metadata_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_grpc_binarylog_v1_MetadataEntry_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_grpc_binarylog_v1_MetadataEntry_fieldAccessorTable;
+ static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_grpc_binarylog_v1_Address_descriptor;
+ static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_grpc_binarylog_v1_Address_fieldAccessorTable;
+
+ public static com.google.protobuf.Descriptors.FileDescriptor
+ getDescriptor() {
+ return descriptor;
+ }
+ private static com.google.protobuf.Descriptors.FileDescriptor
+ descriptor;
+ static {
+ java.lang.String[] descriptorData = {
+ "\n\036grpc/binlog/v1/binarylog.proto\022\021grpc.b" +
+ "inarylog.v1\032\036google/protobuf/duration.pr" +
+ "oto\032\037google/protobuf/timestamp.proto\"\276\006\n" +
+ "\014GrpcLogEntry\022-\n\ttimestamp\030\001 \001(\0132\032.googl" +
+ "e.protobuf.Timestamp\022\017\n\007call_id\030\002 \001(\004\022\037\n" +
+ "\027sequence_id_within_call\030\003 \001(\004\0227\n\004type\030\004" +
+ " \001(\0162).grpc.binarylog.v1.GrpcLogEntry.Ev" +
+ "entType\0226\n\006logger\030\005 \001(\0162&.grpc.binarylog" +
+ ".v1.GrpcLogEntry.Logger\0228\n\rclient_header" +
+ "\030\006 \001(\0132\037.grpc.binarylog.v1.ClientHeaderH" +
+ "\000\0228\n\rserver_header\030\007 \001(\0132\037.grpc.binarylo" +
+ "g.v1.ServerHeaderH\000\022-\n\007message\030\010 \001(\0132\032.g" +
+ "rpc.binarylog.v1.MessageH\000\022-\n\007trailer\030\t " +
+ "\001(\0132\032.grpc.binarylog.v1.TrailerH\000\022\031\n\021pay" +
+ "load_truncated\030\n \001(\010\022(\n\004peer\030\013 \001(\0132\032.grp" +
+ "c.binarylog.v1.Address\"\365\001\n\tEventType\022\026\n\022" +
+ "EVENT_TYPE_UNKNOWN\020\000\022\034\n\030EVENT_TYPE_CLIEN" +
+ "T_HEADER\020\001\022\034\n\030EVENT_TYPE_SERVER_HEADER\020\002" +
+ "\022\035\n\031EVENT_TYPE_CLIENT_MESSAGE\020\003\022\035\n\031EVENT" +
+ "_TYPE_SERVER_MESSAGE\020\004\022 \n\034EVENT_TYPE_CLI" +
+ "ENT_HALF_CLOSE\020\005\022\035\n\031EVENT_TYPE_SERVER_TR" +
+ "AILER\020\006\022\025\n\021EVENT_TYPE_CANCEL\020\007\"B\n\006Logger" +
+ "\022\022\n\016LOGGER_UNKNOWN\020\000\022\021\n\rLOGGER_CLIENT\020\001\022" +
+ "\021\n\rLOGGER_SERVER\020\002B\t\n\007payload\"\221\001\n\014Client" +
+ "Header\022-\n\010metadata\030\001 \001(\0132\033.grpc.binarylo" +
+ "g.v1.Metadata\022\023\n\013method_name\030\002 \001(\t\022\021\n\tau" +
+ "thority\030\003 \001(\t\022*\n\007timeout\030\004 \001(\0132\031.google." +
+ "protobuf.Duration\"=\n\014ServerHeader\022-\n\010met" +
+ "adata\030\001 \001(\0132\033.grpc.binarylog.v1.Metadata" +
+ "\"}\n\007Trailer\022-\n\010metadata\030\001 \001(\0132\033.grpc.bin" +
+ "arylog.v1.Metadata\022\023\n\013status_code\030\002 \001(\r\022" +
+ "\026\n\016status_message\030\003 \001(\t\022\026\n\016status_detail" +
+ "s\030\004 \001(\014\"\'\n\007Message\022\016\n\006length\030\001 \001(\r\022\014\n\004da" +
+ "ta\030\002 \001(\014\";\n\010Metadata\022/\n\005entry\030\001 \003(\0132 .gr" +
+ "pc.binarylog.v1.MetadataEntry\"+\n\rMetadat" +
+ "aEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\014\"\241\001\n\007A" +
+ "ddress\022-\n\004type\030\001 \001(\0162\037.grpc.binarylog.v1" +
+ ".Address.Type\022\017\n\007address\030\002 \001(\t\022\017\n\007ip_por" +
+ "t\030\003 \001(\r\"E\n\004Type\022\020\n\014TYPE_UNKNOWN\020\000\022\r\n\tTYP" +
+ "E_IPV4\020\001\022\r\n\tTYPE_IPV6\020\002\022\r\n\tTYPE_UNIX\020\003B\\" +
+ "\n\024io.grpc.binarylog.v1B\016BinaryLogProtoP\001" +
+ "Z2google.golang.org/grpc/binarylog/grpc_" +
+ "binarylog_v1b\006proto3"
+ };
+ com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+ new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
+ public com.google.protobuf.ExtensionRegistry assignDescriptors(
+ com.google.protobuf.Descriptors.FileDescriptor root) {
+ descriptor = root;
+ return null;
+ }
+ };
+ com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ com.google.protobuf.DurationProto.getDescriptor(),
+ com.google.protobuf.TimestampProto.getDescriptor(),
+ }, assigner);
+ internal_static_grpc_binarylog_v1_GrpcLogEntry_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_grpc_binarylog_v1_GrpcLogEntry_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_grpc_binarylog_v1_GrpcLogEntry_descriptor,
+ new java.lang.String[] { "Timestamp", "CallId", "SequenceIdWithinCall", "Type", "Logger", "ClientHeader", "ServerHeader", "Message", "Trailer", "PayloadTruncated", "Peer", "Payload", });
+ internal_static_grpc_binarylog_v1_ClientHeader_descriptor =
+ getDescriptor().getMessageTypes().get(1);
+ internal_static_grpc_binarylog_v1_ClientHeader_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_grpc_binarylog_v1_ClientHeader_descriptor,
+ new java.lang.String[] { "Metadata", "MethodName", "Authority", "Timeout", });
+ internal_static_grpc_binarylog_v1_ServerHeader_descriptor =
+ getDescriptor().getMessageTypes().get(2);
+ internal_static_grpc_binarylog_v1_ServerHeader_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_grpc_binarylog_v1_ServerHeader_descriptor,
+ new java.lang.String[] { "Metadata", });
+ internal_static_grpc_binarylog_v1_Trailer_descriptor =
+ getDescriptor().getMessageTypes().get(3);
+ internal_static_grpc_binarylog_v1_Trailer_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_grpc_binarylog_v1_Trailer_descriptor,
+ new java.lang.String[] { "Metadata", "StatusCode", "StatusMessage", "StatusDetails", });
+ internal_static_grpc_binarylog_v1_Message_descriptor =
+ getDescriptor().getMessageTypes().get(4);
+ internal_static_grpc_binarylog_v1_Message_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_grpc_binarylog_v1_Message_descriptor,
+ new java.lang.String[] { "Length", "Data", });
+ internal_static_grpc_binarylog_v1_Metadata_descriptor =
+ getDescriptor().getMessageTypes().get(5);
+ internal_static_grpc_binarylog_v1_Metadata_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_grpc_binarylog_v1_Metadata_descriptor,
+ new java.lang.String[] { "Entry", });
+ internal_static_grpc_binarylog_v1_MetadataEntry_descriptor =
+ getDescriptor().getMessageTypes().get(6);
+ internal_static_grpc_binarylog_v1_MetadataEntry_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_grpc_binarylog_v1_MetadataEntry_descriptor,
+ new java.lang.String[] { "Key", "Value", });
+ internal_static_grpc_binarylog_v1_Address_descriptor =
+ getDescriptor().getMessageTypes().get(7);
+ internal_static_grpc_binarylog_v1_Address_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_grpc_binarylog_v1_Address_descriptor,
+ new java.lang.String[] { "Type", "Address", "IpPort", });
+ com.google.protobuf.DurationProto.getDescriptor();
+ com.google.protobuf.TimestampProto.getDescriptor();
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/ClientHeader.java b/services/src/generated/main/java/io/grpc/binarylog/v1/ClientHeader.java
new file mode 100644
index 000000000..02b4c3db2
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/ClientHeader.java
@@ -0,0 +1,1199 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+/**
+ * Protobuf type {@code grpc.binarylog.v1.ClientHeader}
+ */
+public final class ClientHeader extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:grpc.binarylog.v1.ClientHeader)
+ ClientHeaderOrBuilder {
+private static final long serialVersionUID = 0L;
+ // Use ClientHeader.newBuilder() to construct.
+ private ClientHeader(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private ClientHeader() {
+ methodName_ = "";
+ authority_ = "";
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private ClientHeader(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ io.grpc.binarylog.v1.Metadata.Builder subBuilder = null;
+ if (metadata_ != null) {
+ subBuilder = metadata_.toBuilder();
+ }
+ metadata_ = input.readMessage(io.grpc.binarylog.v1.Metadata.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(metadata_);
+ metadata_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ case 18: {
+ java.lang.String s = input.readStringRequireUtf8();
+
+ methodName_ = s;
+ break;
+ }
+ case 26: {
+ java.lang.String s = input.readStringRequireUtf8();
+
+ authority_ = s;
+ break;
+ }
+ case 34: {
+ com.google.protobuf.Duration.Builder subBuilder = null;
+ if (timeout_ != null) {
+ subBuilder = timeout_.toBuilder();
+ }
+ timeout_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(timeout_);
+ timeout_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ClientHeader_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ClientHeader_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.ClientHeader.class, io.grpc.binarylog.v1.ClientHeader.Builder.class);
+ }
+
+ public static final int METADATA_FIELD_NUMBER = 1;
+ private io.grpc.binarylog.v1.Metadata metadata_;
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public boolean hasMetadata() {
+ return metadata_ != null;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Metadata getMetadata() {
+ return metadata_ == null ? io.grpc.binarylog.v1.Metadata.getDefaultInstance() : metadata_;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataOrBuilder getMetadataOrBuilder() {
+ return getMetadata();
+ }
+
+ public static final int METHOD_NAME_FIELD_NUMBER = 2;
+ private volatile java.lang.Object methodName_;
+ /**
+ * <pre>
+ * The name of the RPC method, which looks something like:
+ * /&lt;service&gt;/&lt;method&gt;
+ * Note the leading "/" character.
+ * </pre>
+ *
+ * <code>string method_name = 2;</code>
+ */
+ public java.lang.String getMethodName() {
+ java.lang.Object ref = methodName_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ methodName_ = s;
+ return s;
+ }
+ }
+ /**
+ * <pre>
+ * The name of the RPC method, which looks something like:
+ * /&lt;service&gt;/&lt;method&gt;
+ * Note the leading "/" character.
+ * </pre>
+ *
+ * <code>string method_name = 2;</code>
+ */
+ public com.google.protobuf.ByteString
+ getMethodNameBytes() {
+ java.lang.Object ref = methodName_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ methodName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int AUTHORITY_FIELD_NUMBER = 3;
+ private volatile java.lang.Object authority_;
+ /**
+ * <pre>
+ * A single process may be used to run multiple virtual
+ * servers with different identities.
+ * The authority is the name of such a server identitiy.
+ * It is typically a portion of the URI in the form of
+ * &lt;host&gt; or &lt;host&gt;:&lt;port&gt; .
+ * </pre>
+ *
+ * <code>string authority = 3;</code>
+ */
+ public java.lang.String getAuthority() {
+ java.lang.Object ref = authority_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ authority_ = s;
+ return s;
+ }
+ }
+ /**
+ * <pre>
+ * A single process may be used to run multiple virtual
+ * servers with different identities.
+ * The authority is the name of such a server identitiy.
+ * It is typically a portion of the URI in the form of
+ * &lt;host&gt; or &lt;host&gt;:&lt;port&gt; .
+ * </pre>
+ *
+ * <code>string authority = 3;</code>
+ */
+ public com.google.protobuf.ByteString
+ getAuthorityBytes() {
+ java.lang.Object ref = authority_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ authority_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int TIMEOUT_FIELD_NUMBER = 4;
+ private com.google.protobuf.Duration timeout_;
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public boolean hasTimeout() {
+ return timeout_ != null;
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public com.google.protobuf.Duration getTimeout() {
+ return timeout_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeout_;
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public com.google.protobuf.DurationOrBuilder getTimeoutOrBuilder() {
+ return getTimeout();
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (metadata_ != null) {
+ output.writeMessage(1, getMetadata());
+ }
+ if (!getMethodNameBytes().isEmpty()) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 2, methodName_);
+ }
+ if (!getAuthorityBytes().isEmpty()) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 3, authority_);
+ }
+ if (timeout_ != null) {
+ output.writeMessage(4, getTimeout());
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (metadata_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, getMetadata());
+ }
+ if (!getMethodNameBytes().isEmpty()) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, methodName_);
+ }
+ if (!getAuthorityBytes().isEmpty()) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, authority_);
+ }
+ if (timeout_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(4, getTimeout());
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof io.grpc.binarylog.v1.ClientHeader)) {
+ return super.equals(obj);
+ }
+ io.grpc.binarylog.v1.ClientHeader other = (io.grpc.binarylog.v1.ClientHeader) obj;
+
+ boolean result = true;
+ result = result && (hasMetadata() == other.hasMetadata());
+ if (hasMetadata()) {
+ result = result && getMetadata()
+ .equals(other.getMetadata());
+ }
+ result = result && getMethodName()
+ .equals(other.getMethodName());
+ result = result && getAuthority()
+ .equals(other.getAuthority());
+ result = result && (hasTimeout() == other.hasTimeout());
+ if (hasTimeout()) {
+ result = result && getTimeout()
+ .equals(other.getTimeout());
+ }
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasMetadata()) {
+ hash = (37 * hash) + METADATA_FIELD_NUMBER;
+ hash = (53 * hash) + getMetadata().hashCode();
+ }
+ hash = (37 * hash) + METHOD_NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getMethodName().hashCode();
+ hash = (37 * hash) + AUTHORITY_FIELD_NUMBER;
+ hash = (53 * hash) + getAuthority().hashCode();
+ if (hasTimeout()) {
+ hash = (37 * hash) + TIMEOUT_FIELD_NUMBER;
+ hash = (53 * hash) + getTimeout().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.ClientHeader parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(io.grpc.binarylog.v1.ClientHeader prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code grpc.binarylog.v1.ClientHeader}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:grpc.binarylog.v1.ClientHeader)
+ io.grpc.binarylog.v1.ClientHeaderOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ClientHeader_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ClientHeader_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.ClientHeader.class, io.grpc.binarylog.v1.ClientHeader.Builder.class);
+ }
+
+ // Construct using io.grpc.binarylog.v1.ClientHeader.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ if (metadataBuilder_ == null) {
+ metadata_ = null;
+ } else {
+ metadata_ = null;
+ metadataBuilder_ = null;
+ }
+ methodName_ = "";
+
+ authority_ = "";
+
+ if (timeoutBuilder_ == null) {
+ timeout_ = null;
+ } else {
+ timeout_ = null;
+ timeoutBuilder_ = null;
+ }
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ClientHeader_descriptor;
+ }
+
+ public io.grpc.binarylog.v1.ClientHeader getDefaultInstanceForType() {
+ return io.grpc.binarylog.v1.ClientHeader.getDefaultInstance();
+ }
+
+ public io.grpc.binarylog.v1.ClientHeader build() {
+ io.grpc.binarylog.v1.ClientHeader result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public io.grpc.binarylog.v1.ClientHeader buildPartial() {
+ io.grpc.binarylog.v1.ClientHeader result = new io.grpc.binarylog.v1.ClientHeader(this);
+ if (metadataBuilder_ == null) {
+ result.metadata_ = metadata_;
+ } else {
+ result.metadata_ = metadataBuilder_.build();
+ }
+ result.methodName_ = methodName_;
+ result.authority_ = authority_;
+ if (timeoutBuilder_ == null) {
+ result.timeout_ = timeout_;
+ } else {
+ result.timeout_ = timeoutBuilder_.build();
+ }
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof io.grpc.binarylog.v1.ClientHeader) {
+ return mergeFrom((io.grpc.binarylog.v1.ClientHeader)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(io.grpc.binarylog.v1.ClientHeader other) {
+ if (other == io.grpc.binarylog.v1.ClientHeader.getDefaultInstance()) return this;
+ if (other.hasMetadata()) {
+ mergeMetadata(other.getMetadata());
+ }
+ if (!other.getMethodName().isEmpty()) {
+ methodName_ = other.methodName_;
+ onChanged();
+ }
+ if (!other.getAuthority().isEmpty()) {
+ authority_ = other.authority_;
+ onChanged();
+ }
+ if (other.hasTimeout()) {
+ mergeTimeout(other.getTimeout());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ io.grpc.binarylog.v1.ClientHeader parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (io.grpc.binarylog.v1.ClientHeader) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private io.grpc.binarylog.v1.Metadata metadata_ = null;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Metadata, io.grpc.binarylog.v1.Metadata.Builder, io.grpc.binarylog.v1.MetadataOrBuilder> metadataBuilder_;
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public boolean hasMetadata() {
+ return metadataBuilder_ != null || metadata_ != null;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Metadata getMetadata() {
+ if (metadataBuilder_ == null) {
+ return metadata_ == null ? io.grpc.binarylog.v1.Metadata.getDefaultInstance() : metadata_;
+ } else {
+ return metadataBuilder_.getMessage();
+ }
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder setMetadata(io.grpc.binarylog.v1.Metadata value) {
+ if (metadataBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ metadata_ = value;
+ onChanged();
+ } else {
+ metadataBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder setMetadata(
+ io.grpc.binarylog.v1.Metadata.Builder builderForValue) {
+ if (metadataBuilder_ == null) {
+ metadata_ = builderForValue.build();
+ onChanged();
+ } else {
+ metadataBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder mergeMetadata(io.grpc.binarylog.v1.Metadata value) {
+ if (metadataBuilder_ == null) {
+ if (metadata_ != null) {
+ metadata_ =
+ io.grpc.binarylog.v1.Metadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
+ } else {
+ metadata_ = value;
+ }
+ onChanged();
+ } else {
+ metadataBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder clearMetadata() {
+ if (metadataBuilder_ == null) {
+ metadata_ = null;
+ onChanged();
+ } else {
+ metadata_ = null;
+ metadataBuilder_ = null;
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Metadata.Builder getMetadataBuilder() {
+
+ onChanged();
+ return getMetadataFieldBuilder().getBuilder();
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataOrBuilder getMetadataOrBuilder() {
+ if (metadataBuilder_ != null) {
+ return metadataBuilder_.getMessageOrBuilder();
+ } else {
+ return metadata_ == null ?
+ io.grpc.binarylog.v1.Metadata.getDefaultInstance() : metadata_;
+ }
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Metadata, io.grpc.binarylog.v1.Metadata.Builder, io.grpc.binarylog.v1.MetadataOrBuilder>
+ getMetadataFieldBuilder() {
+ if (metadataBuilder_ == null) {
+ metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Metadata, io.grpc.binarylog.v1.Metadata.Builder, io.grpc.binarylog.v1.MetadataOrBuilder>(
+ getMetadata(),
+ getParentForChildren(),
+ isClean());
+ metadata_ = null;
+ }
+ return metadataBuilder_;
+ }
+
+ private java.lang.Object methodName_ = "";
+ /**
+ * <pre>
+ * The name of the RPC method, which looks something like:
+ * /&lt;service&gt;/&lt;method&gt;
+ * Note the leading "/" character.
+ * </pre>
+ *
+ * <code>string method_name = 2;</code>
+ */
+ public java.lang.String getMethodName() {
+ java.lang.Object ref = methodName_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ methodName_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <pre>
+ * The name of the RPC method, which looks something like:
+ * /&lt;service&gt;/&lt;method&gt;
+ * Note the leading "/" character.
+ * </pre>
+ *
+ * <code>string method_name = 2;</code>
+ */
+ public com.google.protobuf.ByteString
+ getMethodNameBytes() {
+ java.lang.Object ref = methodName_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ methodName_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <pre>
+ * The name of the RPC method, which looks something like:
+ * /&lt;service&gt;/&lt;method&gt;
+ * Note the leading "/" character.
+ * </pre>
+ *
+ * <code>string method_name = 2;</code>
+ */
+ public Builder setMethodName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ methodName_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * The name of the RPC method, which looks something like:
+ * /&lt;service&gt;/&lt;method&gt;
+ * Note the leading "/" character.
+ * </pre>
+ *
+ * <code>string method_name = 2;</code>
+ */
+ public Builder clearMethodName() {
+
+ methodName_ = getDefaultInstance().getMethodName();
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * The name of the RPC method, which looks something like:
+ * /&lt;service&gt;/&lt;method&gt;
+ * Note the leading "/" character.
+ * </pre>
+ *
+ * <code>string method_name = 2;</code>
+ */
+ public Builder setMethodNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ methodName_ = value;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object authority_ = "";
+ /**
+ * <pre>
+ * A single process may be used to run multiple virtual
+ * servers with different identities.
+ * The authority is the name of such a server identitiy.
+ * It is typically a portion of the URI in the form of
+ * &lt;host&gt; or &lt;host&gt;:&lt;port&gt; .
+ * </pre>
+ *
+ * <code>string authority = 3;</code>
+ */
+ public java.lang.String getAuthority() {
+ java.lang.Object ref = authority_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ authority_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <pre>
+ * A single process may be used to run multiple virtual
+ * servers with different identities.
+ * The authority is the name of such a server identitiy.
+ * It is typically a portion of the URI in the form of
+ * &lt;host&gt; or &lt;host&gt;:&lt;port&gt; .
+ * </pre>
+ *
+ * <code>string authority = 3;</code>
+ */
+ public com.google.protobuf.ByteString
+ getAuthorityBytes() {
+ java.lang.Object ref = authority_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ authority_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <pre>
+ * A single process may be used to run multiple virtual
+ * servers with different identities.
+ * The authority is the name of such a server identitiy.
+ * It is typically a portion of the URI in the form of
+ * &lt;host&gt; or &lt;host&gt;:&lt;port&gt; .
+ * </pre>
+ *
+ * <code>string authority = 3;</code>
+ */
+ public Builder setAuthority(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ authority_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * A single process may be used to run multiple virtual
+ * servers with different identities.
+ * The authority is the name of such a server identitiy.
+ * It is typically a portion of the URI in the form of
+ * &lt;host&gt; or &lt;host&gt;:&lt;port&gt; .
+ * </pre>
+ *
+ * <code>string authority = 3;</code>
+ */
+ public Builder clearAuthority() {
+
+ authority_ = getDefaultInstance().getAuthority();
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * A single process may be used to run multiple virtual
+ * servers with different identities.
+ * The authority is the name of such a server identitiy.
+ * It is typically a portion of the URI in the form of
+ * &lt;host&gt; or &lt;host&gt;:&lt;port&gt; .
+ * </pre>
+ *
+ * <code>string authority = 3;</code>
+ */
+ public Builder setAuthorityBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ authority_ = value;
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.Duration timeout_ = null;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> timeoutBuilder_;
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public boolean hasTimeout() {
+ return timeoutBuilder_ != null || timeout_ != null;
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public com.google.protobuf.Duration getTimeout() {
+ if (timeoutBuilder_ == null) {
+ return timeout_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeout_;
+ } else {
+ return timeoutBuilder_.getMessage();
+ }
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public Builder setTimeout(com.google.protobuf.Duration value) {
+ if (timeoutBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ timeout_ = value;
+ onChanged();
+ } else {
+ timeoutBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public Builder setTimeout(
+ com.google.protobuf.Duration.Builder builderForValue) {
+ if (timeoutBuilder_ == null) {
+ timeout_ = builderForValue.build();
+ onChanged();
+ } else {
+ timeoutBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public Builder mergeTimeout(com.google.protobuf.Duration value) {
+ if (timeoutBuilder_ == null) {
+ if (timeout_ != null) {
+ timeout_ =
+ com.google.protobuf.Duration.newBuilder(timeout_).mergeFrom(value).buildPartial();
+ } else {
+ timeout_ = value;
+ }
+ onChanged();
+ } else {
+ timeoutBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public Builder clearTimeout() {
+ if (timeoutBuilder_ == null) {
+ timeout_ = null;
+ onChanged();
+ } else {
+ timeout_ = null;
+ timeoutBuilder_ = null;
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public com.google.protobuf.Duration.Builder getTimeoutBuilder() {
+
+ onChanged();
+ return getTimeoutFieldBuilder().getBuilder();
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ public com.google.protobuf.DurationOrBuilder getTimeoutOrBuilder() {
+ if (timeoutBuilder_ != null) {
+ return timeoutBuilder_.getMessageOrBuilder();
+ } else {
+ return timeout_ == null ?
+ com.google.protobuf.Duration.getDefaultInstance() : timeout_;
+ }
+ }
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>
+ getTimeoutFieldBuilder() {
+ if (timeoutBuilder_ == null) {
+ timeoutBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
+ getTimeout(),
+ getParentForChildren(),
+ isClean());
+ timeout_ = null;
+ }
+ return timeoutBuilder_;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:grpc.binarylog.v1.ClientHeader)
+ }
+
+ // @@protoc_insertion_point(class_scope:grpc.binarylog.v1.ClientHeader)
+ private static final io.grpc.binarylog.v1.ClientHeader DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new io.grpc.binarylog.v1.ClientHeader();
+ }
+
+ public static io.grpc.binarylog.v1.ClientHeader getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<ClientHeader>
+ PARSER = new com.google.protobuf.AbstractParser<ClientHeader>() {
+ public ClientHeader parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new ClientHeader(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<ClientHeader> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<ClientHeader> getParserForType() {
+ return PARSER;
+ }
+
+ public io.grpc.binarylog.v1.ClientHeader getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/ClientHeaderOrBuilder.java b/services/src/generated/main/java/io/grpc/binarylog/v1/ClientHeaderOrBuilder.java
new file mode 100644
index 000000000..3dab835c0
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/ClientHeaderOrBuilder.java
@@ -0,0 +1,107 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+public interface ClientHeaderOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:grpc.binarylog.v1.ClientHeader)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ boolean hasMetadata();
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ io.grpc.binarylog.v1.Metadata getMetadata();
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ io.grpc.binarylog.v1.MetadataOrBuilder getMetadataOrBuilder();
+
+ /**
+ * <pre>
+ * The name of the RPC method, which looks something like:
+ * /&lt;service&gt;/&lt;method&gt;
+ * Note the leading "/" character.
+ * </pre>
+ *
+ * <code>string method_name = 2;</code>
+ */
+ java.lang.String getMethodName();
+ /**
+ * <pre>
+ * The name of the RPC method, which looks something like:
+ * /&lt;service&gt;/&lt;method&gt;
+ * Note the leading "/" character.
+ * </pre>
+ *
+ * <code>string method_name = 2;</code>
+ */
+ com.google.protobuf.ByteString
+ getMethodNameBytes();
+
+ /**
+ * <pre>
+ * A single process may be used to run multiple virtual
+ * servers with different identities.
+ * The authority is the name of such a server identitiy.
+ * It is typically a portion of the URI in the form of
+ * &lt;host&gt; or &lt;host&gt;:&lt;port&gt; .
+ * </pre>
+ *
+ * <code>string authority = 3;</code>
+ */
+ java.lang.String getAuthority();
+ /**
+ * <pre>
+ * A single process may be used to run multiple virtual
+ * servers with different identities.
+ * The authority is the name of such a server identitiy.
+ * It is typically a portion of the URI in the form of
+ * &lt;host&gt; or &lt;host&gt;:&lt;port&gt; .
+ * </pre>
+ *
+ * <code>string authority = 3;</code>
+ */
+ com.google.protobuf.ByteString
+ getAuthorityBytes();
+
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ boolean hasTimeout();
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ com.google.protobuf.Duration getTimeout();
+ /**
+ * <pre>
+ * the RPC timeout
+ * </pre>
+ *
+ * <code>.google.protobuf.Duration timeout = 4;</code>
+ */
+ com.google.protobuf.DurationOrBuilder getTimeoutOrBuilder();
+}
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/GrpcLogEntry.java b/services/src/generated/main/java/io/grpc/binarylog/v1/GrpcLogEntry.java
new file mode 100644
index 000000000..4f885a2e6
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/GrpcLogEntry.java
@@ -0,0 +1,2629 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+/**
+ * <pre>
+ * Log entry we store in binary logs
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.GrpcLogEntry}
+ */
+public final class GrpcLogEntry extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:grpc.binarylog.v1.GrpcLogEntry)
+ GrpcLogEntryOrBuilder {
+private static final long serialVersionUID = 0L;
+ // Use GrpcLogEntry.newBuilder() to construct.
+ private GrpcLogEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private GrpcLogEntry() {
+ callId_ = 0L;
+ sequenceIdWithinCall_ = 0L;
+ type_ = 0;
+ logger_ = 0;
+ payloadTruncated_ = false;
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private GrpcLogEntry(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ com.google.protobuf.Timestamp.Builder subBuilder = null;
+ if (timestamp_ != null) {
+ subBuilder = timestamp_.toBuilder();
+ }
+ timestamp_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(timestamp_);
+ timestamp_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ case 16: {
+
+ callId_ = input.readUInt64();
+ break;
+ }
+ case 24: {
+
+ sequenceIdWithinCall_ = input.readUInt64();
+ break;
+ }
+ case 32: {
+ int rawValue = input.readEnum();
+
+ type_ = rawValue;
+ break;
+ }
+ case 40: {
+ int rawValue = input.readEnum();
+
+ logger_ = rawValue;
+ break;
+ }
+ case 50: {
+ io.grpc.binarylog.v1.ClientHeader.Builder subBuilder = null;
+ if (payloadCase_ == 6) {
+ subBuilder = ((io.grpc.binarylog.v1.ClientHeader) payload_).toBuilder();
+ }
+ payload_ =
+ input.readMessage(io.grpc.binarylog.v1.ClientHeader.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom((io.grpc.binarylog.v1.ClientHeader) payload_);
+ payload_ = subBuilder.buildPartial();
+ }
+ payloadCase_ = 6;
+ break;
+ }
+ case 58: {
+ io.grpc.binarylog.v1.ServerHeader.Builder subBuilder = null;
+ if (payloadCase_ == 7) {
+ subBuilder = ((io.grpc.binarylog.v1.ServerHeader) payload_).toBuilder();
+ }
+ payload_ =
+ input.readMessage(io.grpc.binarylog.v1.ServerHeader.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom((io.grpc.binarylog.v1.ServerHeader) payload_);
+ payload_ = subBuilder.buildPartial();
+ }
+ payloadCase_ = 7;
+ break;
+ }
+ case 66: {
+ io.grpc.binarylog.v1.Message.Builder subBuilder = null;
+ if (payloadCase_ == 8) {
+ subBuilder = ((io.grpc.binarylog.v1.Message) payload_).toBuilder();
+ }
+ payload_ =
+ input.readMessage(io.grpc.binarylog.v1.Message.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom((io.grpc.binarylog.v1.Message) payload_);
+ payload_ = subBuilder.buildPartial();
+ }
+ payloadCase_ = 8;
+ break;
+ }
+ case 74: {
+ io.grpc.binarylog.v1.Trailer.Builder subBuilder = null;
+ if (payloadCase_ == 9) {
+ subBuilder = ((io.grpc.binarylog.v1.Trailer) payload_).toBuilder();
+ }
+ payload_ =
+ input.readMessage(io.grpc.binarylog.v1.Trailer.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom((io.grpc.binarylog.v1.Trailer) payload_);
+ payload_ = subBuilder.buildPartial();
+ }
+ payloadCase_ = 9;
+ break;
+ }
+ case 80: {
+
+ payloadTruncated_ = input.readBool();
+ break;
+ }
+ case 90: {
+ io.grpc.binarylog.v1.Address.Builder subBuilder = null;
+ if (peer_ != null) {
+ subBuilder = peer_.toBuilder();
+ }
+ peer_ = input.readMessage(io.grpc.binarylog.v1.Address.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(peer_);
+ peer_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_GrpcLogEntry_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_GrpcLogEntry_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.GrpcLogEntry.class, io.grpc.binarylog.v1.GrpcLogEntry.Builder.class);
+ }
+
+ /**
+ * <pre>
+ * Enumerates the type of event
+ * Note the terminology is different from the RPC semantics
+ * definition, but the same meaning is expressed here.
+ * </pre>
+ *
+ * Protobuf enum {@code grpc.binarylog.v1.GrpcLogEntry.EventType}
+ */
+ public enum EventType
+ implements com.google.protobuf.ProtocolMessageEnum {
+ /**
+ * <code>EVENT_TYPE_UNKNOWN = 0;</code>
+ */
+ EVENT_TYPE_UNKNOWN(0),
+ /**
+ * <pre>
+ * Header sent from client to server
+ * </pre>
+ *
+ * <code>EVENT_TYPE_CLIENT_HEADER = 1;</code>
+ */
+ EVENT_TYPE_CLIENT_HEADER(1),
+ /**
+ * <pre>
+ * Header sent from server to client
+ * </pre>
+ *
+ * <code>EVENT_TYPE_SERVER_HEADER = 2;</code>
+ */
+ EVENT_TYPE_SERVER_HEADER(2),
+ /**
+ * <pre>
+ * Message sent from client to server
+ * </pre>
+ *
+ * <code>EVENT_TYPE_CLIENT_MESSAGE = 3;</code>
+ */
+ EVENT_TYPE_CLIENT_MESSAGE(3),
+ /**
+ * <pre>
+ * Message sent from server to client
+ * </pre>
+ *
+ * <code>EVENT_TYPE_SERVER_MESSAGE = 4;</code>
+ */
+ EVENT_TYPE_SERVER_MESSAGE(4),
+ /**
+ * <pre>
+ * A signal that client is done sending
+ * </pre>
+ *
+ * <code>EVENT_TYPE_CLIENT_HALF_CLOSE = 5;</code>
+ */
+ EVENT_TYPE_CLIENT_HALF_CLOSE(5),
+ /**
+ * <pre>
+ * Trailer indicates the end of the RPC.
+ * On client side, this event means a trailer was either received
+ * from the network or the gRPC library locally generated a status
+ * to inform the application about a failure.
+ * On server side, this event means the server application requested
+ * to send a trailer. Note: EVENT_TYPE_CANCEL may still arrive after
+ * this due to races on server side.
+ * </pre>
+ *
+ * <code>EVENT_TYPE_SERVER_TRAILER = 6;</code>
+ */
+ EVENT_TYPE_SERVER_TRAILER(6),
+ /**
+ * <pre>
+ * A signal that the RPC is cancelled. On client side, this
+ * indicates the client application requests a cancellation.
+ * On server side, this indicates that cancellation was detected.
+ * Note: This marks the end of the RPC. Events may arrive after
+ * this due to races. For example, on client side a trailer
+ * may arrive even though the application requested to cancel the RPC.
+ * </pre>
+ *
+ * <code>EVENT_TYPE_CANCEL = 7;</code>
+ */
+ EVENT_TYPE_CANCEL(7),
+ UNRECOGNIZED(-1),
+ ;
+
+ /**
+ * <code>EVENT_TYPE_UNKNOWN = 0;</code>
+ */
+ public static final int EVENT_TYPE_UNKNOWN_VALUE = 0;
+ /**
+ * <pre>
+ * Header sent from client to server
+ * </pre>
+ *
+ * <code>EVENT_TYPE_CLIENT_HEADER = 1;</code>
+ */
+ public static final int EVENT_TYPE_CLIENT_HEADER_VALUE = 1;
+ /**
+ * <pre>
+ * Header sent from server to client
+ * </pre>
+ *
+ * <code>EVENT_TYPE_SERVER_HEADER = 2;</code>
+ */
+ public static final int EVENT_TYPE_SERVER_HEADER_VALUE = 2;
+ /**
+ * <pre>
+ * Message sent from client to server
+ * </pre>
+ *
+ * <code>EVENT_TYPE_CLIENT_MESSAGE = 3;</code>
+ */
+ public static final int EVENT_TYPE_CLIENT_MESSAGE_VALUE = 3;
+ /**
+ * <pre>
+ * Message sent from server to client
+ * </pre>
+ *
+ * <code>EVENT_TYPE_SERVER_MESSAGE = 4;</code>
+ */
+ public static final int EVENT_TYPE_SERVER_MESSAGE_VALUE = 4;
+ /**
+ * <pre>
+ * A signal that client is done sending
+ * </pre>
+ *
+ * <code>EVENT_TYPE_CLIENT_HALF_CLOSE = 5;</code>
+ */
+ public static final int EVENT_TYPE_CLIENT_HALF_CLOSE_VALUE = 5;
+ /**
+ * <pre>
+ * Trailer indicates the end of the RPC.
+ * On client side, this event means a trailer was either received
+ * from the network or the gRPC library locally generated a status
+ * to inform the application about a failure.
+ * On server side, this event means the server application requested
+ * to send a trailer. Note: EVENT_TYPE_CANCEL may still arrive after
+ * this due to races on server side.
+ * </pre>
+ *
+ * <code>EVENT_TYPE_SERVER_TRAILER = 6;</code>
+ */
+ public static final int EVENT_TYPE_SERVER_TRAILER_VALUE = 6;
+ /**
+ * <pre>
+ * A signal that the RPC is cancelled. On client side, this
+ * indicates the client application requests a cancellation.
+ * On server side, this indicates that cancellation was detected.
+ * Note: This marks the end of the RPC. Events may arrive after
+ * this due to races. For example, on client side a trailer
+ * may arrive even though the application requested to cancel the RPC.
+ * </pre>
+ *
+ * <code>EVENT_TYPE_CANCEL = 7;</code>
+ */
+ public static final int EVENT_TYPE_CANCEL_VALUE = 7;
+
+
+ public final int getNumber() {
+ if (this == UNRECOGNIZED) {
+ throw new java.lang.IllegalArgumentException(
+ "Can't get the number of an unknown enum value.");
+ }
+ return value;
+ }
+
+ /**
+ * @deprecated Use {@link #forNumber(int)} instead.
+ */
+ @java.lang.Deprecated
+ public static EventType valueOf(int value) {
+ return forNumber(value);
+ }
+
+ public static EventType forNumber(int value) {
+ switch (value) {
+ case 0: return EVENT_TYPE_UNKNOWN;
+ case 1: return EVENT_TYPE_CLIENT_HEADER;
+ case 2: return EVENT_TYPE_SERVER_HEADER;
+ case 3: return EVENT_TYPE_CLIENT_MESSAGE;
+ case 4: return EVENT_TYPE_SERVER_MESSAGE;
+ case 5: return EVENT_TYPE_CLIENT_HALF_CLOSE;
+ case 6: return EVENT_TYPE_SERVER_TRAILER;
+ case 7: return EVENT_TYPE_CANCEL;
+ default: return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap<EventType>
+ internalGetValueMap() {
+ return internalValueMap;
+ }
+ private static final com.google.protobuf.Internal.EnumLiteMap<
+ EventType> internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap<EventType>() {
+ public EventType findValueByNumber(int number) {
+ return EventType.forNumber(number);
+ }
+ };
+
+ public final com.google.protobuf.Descriptors.EnumValueDescriptor
+ getValueDescriptor() {
+ return getDescriptor().getValues().get(ordinal());
+ }
+ public final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptorForType() {
+ return getDescriptor();
+ }
+ public static final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.GrpcLogEntry.getDescriptor().getEnumTypes().get(0);
+ }
+
+ private static final EventType[] VALUES = values();
+
+ public static EventType valueOf(
+ com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+ if (desc.getType() != getDescriptor()) {
+ throw new java.lang.IllegalArgumentException(
+ "EnumValueDescriptor is not for this type.");
+ }
+ if (desc.getIndex() == -1) {
+ return UNRECOGNIZED;
+ }
+ return VALUES[desc.getIndex()];
+ }
+
+ private final int value;
+
+ private EventType(int value) {
+ this.value = value;
+ }
+
+ // @@protoc_insertion_point(enum_scope:grpc.binarylog.v1.GrpcLogEntry.EventType)
+ }
+
+ /**
+ * <pre>
+ * Enumerates the entity that generates the log entry
+ * </pre>
+ *
+ * Protobuf enum {@code grpc.binarylog.v1.GrpcLogEntry.Logger}
+ */
+ public enum Logger
+ implements com.google.protobuf.ProtocolMessageEnum {
+ /**
+ * <code>LOGGER_UNKNOWN = 0;</code>
+ */
+ LOGGER_UNKNOWN(0),
+ /**
+ * <code>LOGGER_CLIENT = 1;</code>
+ */
+ LOGGER_CLIENT(1),
+ /**
+ * <code>LOGGER_SERVER = 2;</code>
+ */
+ LOGGER_SERVER(2),
+ UNRECOGNIZED(-1),
+ ;
+
+ /**
+ * <code>LOGGER_UNKNOWN = 0;</code>
+ */
+ public static final int LOGGER_UNKNOWN_VALUE = 0;
+ /**
+ * <code>LOGGER_CLIENT = 1;</code>
+ */
+ public static final int LOGGER_CLIENT_VALUE = 1;
+ /**
+ * <code>LOGGER_SERVER = 2;</code>
+ */
+ public static final int LOGGER_SERVER_VALUE = 2;
+
+
+ public final int getNumber() {
+ if (this == UNRECOGNIZED) {
+ throw new java.lang.IllegalArgumentException(
+ "Can't get the number of an unknown enum value.");
+ }
+ return value;
+ }
+
+ /**
+ * @deprecated Use {@link #forNumber(int)} instead.
+ */
+ @java.lang.Deprecated
+ public static Logger valueOf(int value) {
+ return forNumber(value);
+ }
+
+ public static Logger forNumber(int value) {
+ switch (value) {
+ case 0: return LOGGER_UNKNOWN;
+ case 1: return LOGGER_CLIENT;
+ case 2: return LOGGER_SERVER;
+ default: return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap<Logger>
+ internalGetValueMap() {
+ return internalValueMap;
+ }
+ private static final com.google.protobuf.Internal.EnumLiteMap<
+ Logger> internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap<Logger>() {
+ public Logger findValueByNumber(int number) {
+ return Logger.forNumber(number);
+ }
+ };
+
+ public final com.google.protobuf.Descriptors.EnumValueDescriptor
+ getValueDescriptor() {
+ return getDescriptor().getValues().get(ordinal());
+ }
+ public final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptorForType() {
+ return getDescriptor();
+ }
+ public static final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.GrpcLogEntry.getDescriptor().getEnumTypes().get(1);
+ }
+
+ private static final Logger[] VALUES = values();
+
+ public static Logger valueOf(
+ com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+ if (desc.getType() != getDescriptor()) {
+ throw new java.lang.IllegalArgumentException(
+ "EnumValueDescriptor is not for this type.");
+ }
+ if (desc.getIndex() == -1) {
+ return UNRECOGNIZED;
+ }
+ return VALUES[desc.getIndex()];
+ }
+
+ private final int value;
+
+ private Logger(int value) {
+ this.value = value;
+ }
+
+ // @@protoc_insertion_point(enum_scope:grpc.binarylog.v1.GrpcLogEntry.Logger)
+ }
+
+ private int payloadCase_ = 0;
+ private java.lang.Object payload_;
+ public enum PayloadCase
+ implements com.google.protobuf.Internal.EnumLite {
+ CLIENT_HEADER(6),
+ SERVER_HEADER(7),
+ MESSAGE(8),
+ TRAILER(9),
+ PAYLOAD_NOT_SET(0);
+ private final int value;
+ private PayloadCase(int value) {
+ this.value = value;
+ }
+ /**
+ * @deprecated Use {@link #forNumber(int)} instead.
+ */
+ @java.lang.Deprecated
+ public static PayloadCase valueOf(int value) {
+ return forNumber(value);
+ }
+
+ public static PayloadCase forNumber(int value) {
+ switch (value) {
+ case 6: return CLIENT_HEADER;
+ case 7: return SERVER_HEADER;
+ case 8: return MESSAGE;
+ case 9: return TRAILER;
+ case 0: return PAYLOAD_NOT_SET;
+ default: return null;
+ }
+ }
+ public int getNumber() {
+ return this.value;
+ }
+ };
+
+ public PayloadCase
+ getPayloadCase() {
+ return PayloadCase.forNumber(
+ payloadCase_);
+ }
+
+ public static final int TIMESTAMP_FIELD_NUMBER = 1;
+ private com.google.protobuf.Timestamp timestamp_;
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public boolean hasTimestamp() {
+ return timestamp_ != null;
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public com.google.protobuf.Timestamp getTimestamp() {
+ return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_;
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() {
+ return getTimestamp();
+ }
+
+ public static final int CALL_ID_FIELD_NUMBER = 2;
+ private long callId_;
+ /**
+ * <pre>
+ * Uniquely identifies a call. The value must not be 0 in order to disambiguate
+ * from an unset value.
+ * Each call may have several log entries, they will all have the same call_id.
+ * Nothing is guaranteed about their value other than they are unique across
+ * different RPCs in the same gRPC process.
+ * </pre>
+ *
+ * <code>uint64 call_id = 2;</code>
+ */
+ public long getCallId() {
+ return callId_;
+ }
+
+ public static final int SEQUENCE_ID_WITHIN_CALL_FIELD_NUMBER = 3;
+ private long sequenceIdWithinCall_;
+ /**
+ * <pre>
+ * The entry sequence id for this call. The first GrpcLogEntry has a
+ * value of 1, to disambiguate from an unset value. The purpose of
+ * this field is to detect missing entries in environments where
+ * durability or ordering is not guaranteed.
+ * </pre>
+ *
+ * <code>uint64 sequence_id_within_call = 3;</code>
+ */
+ public long getSequenceIdWithinCall() {
+ return sequenceIdWithinCall_;
+ }
+
+ public static final int TYPE_FIELD_NUMBER = 4;
+ private int type_;
+ /**
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.EventType type = 4;</code>
+ */
+ public int getTypeValue() {
+ return type_;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.EventType type = 4;</code>
+ */
+ public io.grpc.binarylog.v1.GrpcLogEntry.EventType getType() {
+ io.grpc.binarylog.v1.GrpcLogEntry.EventType result = io.grpc.binarylog.v1.GrpcLogEntry.EventType.valueOf(type_);
+ return result == null ? io.grpc.binarylog.v1.GrpcLogEntry.EventType.UNRECOGNIZED : result;
+ }
+
+ public static final int LOGGER_FIELD_NUMBER = 5;
+ private int logger_;
+ /**
+ * <pre>
+ * One of the above Logger enum
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.Logger logger = 5;</code>
+ */
+ public int getLoggerValue() {
+ return logger_;
+ }
+ /**
+ * <pre>
+ * One of the above Logger enum
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.Logger logger = 5;</code>
+ */
+ public io.grpc.binarylog.v1.GrpcLogEntry.Logger getLogger() {
+ io.grpc.binarylog.v1.GrpcLogEntry.Logger result = io.grpc.binarylog.v1.GrpcLogEntry.Logger.valueOf(logger_);
+ return result == null ? io.grpc.binarylog.v1.GrpcLogEntry.Logger.UNRECOGNIZED : result;
+ }
+
+ public static final int CLIENT_HEADER_FIELD_NUMBER = 6;
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public boolean hasClientHeader() {
+ return payloadCase_ == 6;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public io.grpc.binarylog.v1.ClientHeader getClientHeader() {
+ if (payloadCase_ == 6) {
+ return (io.grpc.binarylog.v1.ClientHeader) payload_;
+ }
+ return io.grpc.binarylog.v1.ClientHeader.getDefaultInstance();
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public io.grpc.binarylog.v1.ClientHeaderOrBuilder getClientHeaderOrBuilder() {
+ if (payloadCase_ == 6) {
+ return (io.grpc.binarylog.v1.ClientHeader) payload_;
+ }
+ return io.grpc.binarylog.v1.ClientHeader.getDefaultInstance();
+ }
+
+ public static final int SERVER_HEADER_FIELD_NUMBER = 7;
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public boolean hasServerHeader() {
+ return payloadCase_ == 7;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public io.grpc.binarylog.v1.ServerHeader getServerHeader() {
+ if (payloadCase_ == 7) {
+ return (io.grpc.binarylog.v1.ServerHeader) payload_;
+ }
+ return io.grpc.binarylog.v1.ServerHeader.getDefaultInstance();
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public io.grpc.binarylog.v1.ServerHeaderOrBuilder getServerHeaderOrBuilder() {
+ if (payloadCase_ == 7) {
+ return (io.grpc.binarylog.v1.ServerHeader) payload_;
+ }
+ return io.grpc.binarylog.v1.ServerHeader.getDefaultInstance();
+ }
+
+ public static final int MESSAGE_FIELD_NUMBER = 8;
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public boolean hasMessage() {
+ return payloadCase_ == 8;
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public io.grpc.binarylog.v1.Message getMessage() {
+ if (payloadCase_ == 8) {
+ return (io.grpc.binarylog.v1.Message) payload_;
+ }
+ return io.grpc.binarylog.v1.Message.getDefaultInstance();
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public io.grpc.binarylog.v1.MessageOrBuilder getMessageOrBuilder() {
+ if (payloadCase_ == 8) {
+ return (io.grpc.binarylog.v1.Message) payload_;
+ }
+ return io.grpc.binarylog.v1.Message.getDefaultInstance();
+ }
+
+ public static final int TRAILER_FIELD_NUMBER = 9;
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public boolean hasTrailer() {
+ return payloadCase_ == 9;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public io.grpc.binarylog.v1.Trailer getTrailer() {
+ if (payloadCase_ == 9) {
+ return (io.grpc.binarylog.v1.Trailer) payload_;
+ }
+ return io.grpc.binarylog.v1.Trailer.getDefaultInstance();
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public io.grpc.binarylog.v1.TrailerOrBuilder getTrailerOrBuilder() {
+ if (payloadCase_ == 9) {
+ return (io.grpc.binarylog.v1.Trailer) payload_;
+ }
+ return io.grpc.binarylog.v1.Trailer.getDefaultInstance();
+ }
+
+ public static final int PAYLOAD_TRUNCATED_FIELD_NUMBER = 10;
+ private boolean payloadTruncated_;
+ /**
+ * <pre>
+ * true if payload does not represent the full message or metadata.
+ * </pre>
+ *
+ * <code>bool payload_truncated = 10;</code>
+ */
+ public boolean getPayloadTruncated() {
+ return payloadTruncated_;
+ }
+
+ public static final int PEER_FIELD_NUMBER = 11;
+ private io.grpc.binarylog.v1.Address peer_;
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public boolean hasPeer() {
+ return peer_ != null;
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public io.grpc.binarylog.v1.Address getPeer() {
+ return peer_ == null ? io.grpc.binarylog.v1.Address.getDefaultInstance() : peer_;
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public io.grpc.binarylog.v1.AddressOrBuilder getPeerOrBuilder() {
+ return getPeer();
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (timestamp_ != null) {
+ output.writeMessage(1, getTimestamp());
+ }
+ if (callId_ != 0L) {
+ output.writeUInt64(2, callId_);
+ }
+ if (sequenceIdWithinCall_ != 0L) {
+ output.writeUInt64(3, sequenceIdWithinCall_);
+ }
+ if (type_ != io.grpc.binarylog.v1.GrpcLogEntry.EventType.EVENT_TYPE_UNKNOWN.getNumber()) {
+ output.writeEnum(4, type_);
+ }
+ if (logger_ != io.grpc.binarylog.v1.GrpcLogEntry.Logger.LOGGER_UNKNOWN.getNumber()) {
+ output.writeEnum(5, logger_);
+ }
+ if (payloadCase_ == 6) {
+ output.writeMessage(6, (io.grpc.binarylog.v1.ClientHeader) payload_);
+ }
+ if (payloadCase_ == 7) {
+ output.writeMessage(7, (io.grpc.binarylog.v1.ServerHeader) payload_);
+ }
+ if (payloadCase_ == 8) {
+ output.writeMessage(8, (io.grpc.binarylog.v1.Message) payload_);
+ }
+ if (payloadCase_ == 9) {
+ output.writeMessage(9, (io.grpc.binarylog.v1.Trailer) payload_);
+ }
+ if (payloadTruncated_ != false) {
+ output.writeBool(10, payloadTruncated_);
+ }
+ if (peer_ != null) {
+ output.writeMessage(11, getPeer());
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (timestamp_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, getTimestamp());
+ }
+ if (callId_ != 0L) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt64Size(2, callId_);
+ }
+ if (sequenceIdWithinCall_ != 0L) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt64Size(3, sequenceIdWithinCall_);
+ }
+ if (type_ != io.grpc.binarylog.v1.GrpcLogEntry.EventType.EVENT_TYPE_UNKNOWN.getNumber()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeEnumSize(4, type_);
+ }
+ if (logger_ != io.grpc.binarylog.v1.GrpcLogEntry.Logger.LOGGER_UNKNOWN.getNumber()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeEnumSize(5, logger_);
+ }
+ if (payloadCase_ == 6) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(6, (io.grpc.binarylog.v1.ClientHeader) payload_);
+ }
+ if (payloadCase_ == 7) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(7, (io.grpc.binarylog.v1.ServerHeader) payload_);
+ }
+ if (payloadCase_ == 8) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(8, (io.grpc.binarylog.v1.Message) payload_);
+ }
+ if (payloadCase_ == 9) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(9, (io.grpc.binarylog.v1.Trailer) payload_);
+ }
+ if (payloadTruncated_ != false) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBoolSize(10, payloadTruncated_);
+ }
+ if (peer_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(11, getPeer());
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof io.grpc.binarylog.v1.GrpcLogEntry)) {
+ return super.equals(obj);
+ }
+ io.grpc.binarylog.v1.GrpcLogEntry other = (io.grpc.binarylog.v1.GrpcLogEntry) obj;
+
+ boolean result = true;
+ result = result && (hasTimestamp() == other.hasTimestamp());
+ if (hasTimestamp()) {
+ result = result && getTimestamp()
+ .equals(other.getTimestamp());
+ }
+ result = result && (getCallId()
+ == other.getCallId());
+ result = result && (getSequenceIdWithinCall()
+ == other.getSequenceIdWithinCall());
+ result = result && type_ == other.type_;
+ result = result && logger_ == other.logger_;
+ result = result && (getPayloadTruncated()
+ == other.getPayloadTruncated());
+ result = result && (hasPeer() == other.hasPeer());
+ if (hasPeer()) {
+ result = result && getPeer()
+ .equals(other.getPeer());
+ }
+ result = result && getPayloadCase().equals(
+ other.getPayloadCase());
+ if (!result) return false;
+ switch (payloadCase_) {
+ case 6:
+ result = result && getClientHeader()
+ .equals(other.getClientHeader());
+ break;
+ case 7:
+ result = result && getServerHeader()
+ .equals(other.getServerHeader());
+ break;
+ case 8:
+ result = result && getMessage()
+ .equals(other.getMessage());
+ break;
+ case 9:
+ result = result && getTrailer()
+ .equals(other.getTrailer());
+ break;
+ case 0:
+ default:
+ }
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasTimestamp()) {
+ hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
+ hash = (53 * hash) + getTimestamp().hashCode();
+ }
+ hash = (37 * hash) + CALL_ID_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+ getCallId());
+ hash = (37 * hash) + SEQUENCE_ID_WITHIN_CALL_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
+ getSequenceIdWithinCall());
+ hash = (37 * hash) + TYPE_FIELD_NUMBER;
+ hash = (53 * hash) + type_;
+ hash = (37 * hash) + LOGGER_FIELD_NUMBER;
+ hash = (53 * hash) + logger_;
+ hash = (37 * hash) + PAYLOAD_TRUNCATED_FIELD_NUMBER;
+ hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
+ getPayloadTruncated());
+ if (hasPeer()) {
+ hash = (37 * hash) + PEER_FIELD_NUMBER;
+ hash = (53 * hash) + getPeer().hashCode();
+ }
+ switch (payloadCase_) {
+ case 6:
+ hash = (37 * hash) + CLIENT_HEADER_FIELD_NUMBER;
+ hash = (53 * hash) + getClientHeader().hashCode();
+ break;
+ case 7:
+ hash = (37 * hash) + SERVER_HEADER_FIELD_NUMBER;
+ hash = (53 * hash) + getServerHeader().hashCode();
+ break;
+ case 8:
+ hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
+ hash = (53 * hash) + getMessage().hashCode();
+ break;
+ case 9:
+ hash = (37 * hash) + TRAILER_FIELD_NUMBER;
+ hash = (53 * hash) + getTrailer().hashCode();
+ break;
+ case 0:
+ default:
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.GrpcLogEntry parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(io.grpc.binarylog.v1.GrpcLogEntry prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * <pre>
+ * Log entry we store in binary logs
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.GrpcLogEntry}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:grpc.binarylog.v1.GrpcLogEntry)
+ io.grpc.binarylog.v1.GrpcLogEntryOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_GrpcLogEntry_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_GrpcLogEntry_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.GrpcLogEntry.class, io.grpc.binarylog.v1.GrpcLogEntry.Builder.class);
+ }
+
+ // Construct using io.grpc.binarylog.v1.GrpcLogEntry.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ if (timestampBuilder_ == null) {
+ timestamp_ = null;
+ } else {
+ timestamp_ = null;
+ timestampBuilder_ = null;
+ }
+ callId_ = 0L;
+
+ sequenceIdWithinCall_ = 0L;
+
+ type_ = 0;
+
+ logger_ = 0;
+
+ payloadTruncated_ = false;
+
+ if (peerBuilder_ == null) {
+ peer_ = null;
+ } else {
+ peer_ = null;
+ peerBuilder_ = null;
+ }
+ payloadCase_ = 0;
+ payload_ = null;
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_GrpcLogEntry_descriptor;
+ }
+
+ public io.grpc.binarylog.v1.GrpcLogEntry getDefaultInstanceForType() {
+ return io.grpc.binarylog.v1.GrpcLogEntry.getDefaultInstance();
+ }
+
+ public io.grpc.binarylog.v1.GrpcLogEntry build() {
+ io.grpc.binarylog.v1.GrpcLogEntry result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public io.grpc.binarylog.v1.GrpcLogEntry buildPartial() {
+ io.grpc.binarylog.v1.GrpcLogEntry result = new io.grpc.binarylog.v1.GrpcLogEntry(this);
+ if (timestampBuilder_ == null) {
+ result.timestamp_ = timestamp_;
+ } else {
+ result.timestamp_ = timestampBuilder_.build();
+ }
+ result.callId_ = callId_;
+ result.sequenceIdWithinCall_ = sequenceIdWithinCall_;
+ result.type_ = type_;
+ result.logger_ = logger_;
+ if (payloadCase_ == 6) {
+ if (clientHeaderBuilder_ == null) {
+ result.payload_ = payload_;
+ } else {
+ result.payload_ = clientHeaderBuilder_.build();
+ }
+ }
+ if (payloadCase_ == 7) {
+ if (serverHeaderBuilder_ == null) {
+ result.payload_ = payload_;
+ } else {
+ result.payload_ = serverHeaderBuilder_.build();
+ }
+ }
+ if (payloadCase_ == 8) {
+ if (messageBuilder_ == null) {
+ result.payload_ = payload_;
+ } else {
+ result.payload_ = messageBuilder_.build();
+ }
+ }
+ if (payloadCase_ == 9) {
+ if (trailerBuilder_ == null) {
+ result.payload_ = payload_;
+ } else {
+ result.payload_ = trailerBuilder_.build();
+ }
+ }
+ result.payloadTruncated_ = payloadTruncated_;
+ if (peerBuilder_ == null) {
+ result.peer_ = peer_;
+ } else {
+ result.peer_ = peerBuilder_.build();
+ }
+ result.payloadCase_ = payloadCase_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof io.grpc.binarylog.v1.GrpcLogEntry) {
+ return mergeFrom((io.grpc.binarylog.v1.GrpcLogEntry)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(io.grpc.binarylog.v1.GrpcLogEntry other) {
+ if (other == io.grpc.binarylog.v1.GrpcLogEntry.getDefaultInstance()) return this;
+ if (other.hasTimestamp()) {
+ mergeTimestamp(other.getTimestamp());
+ }
+ if (other.getCallId() != 0L) {
+ setCallId(other.getCallId());
+ }
+ if (other.getSequenceIdWithinCall() != 0L) {
+ setSequenceIdWithinCall(other.getSequenceIdWithinCall());
+ }
+ if (other.type_ != 0) {
+ setTypeValue(other.getTypeValue());
+ }
+ if (other.logger_ != 0) {
+ setLoggerValue(other.getLoggerValue());
+ }
+ if (other.getPayloadTruncated() != false) {
+ setPayloadTruncated(other.getPayloadTruncated());
+ }
+ if (other.hasPeer()) {
+ mergePeer(other.getPeer());
+ }
+ switch (other.getPayloadCase()) {
+ case CLIENT_HEADER: {
+ mergeClientHeader(other.getClientHeader());
+ break;
+ }
+ case SERVER_HEADER: {
+ mergeServerHeader(other.getServerHeader());
+ break;
+ }
+ case MESSAGE: {
+ mergeMessage(other.getMessage());
+ break;
+ }
+ case TRAILER: {
+ mergeTrailer(other.getTrailer());
+ break;
+ }
+ case PAYLOAD_NOT_SET: {
+ break;
+ }
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ io.grpc.binarylog.v1.GrpcLogEntry parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (io.grpc.binarylog.v1.GrpcLogEntry) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int payloadCase_ = 0;
+ private java.lang.Object payload_;
+ public PayloadCase
+ getPayloadCase() {
+ return PayloadCase.forNumber(
+ payloadCase_);
+ }
+
+ public Builder clearPayload() {
+ payloadCase_ = 0;
+ payload_ = null;
+ onChanged();
+ return this;
+ }
+
+
+ private com.google.protobuf.Timestamp timestamp_ = null;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> timestampBuilder_;
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public boolean hasTimestamp() {
+ return timestampBuilder_ != null || timestamp_ != null;
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public com.google.protobuf.Timestamp getTimestamp() {
+ if (timestampBuilder_ == null) {
+ return timestamp_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_;
+ } else {
+ return timestampBuilder_.getMessage();
+ }
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public Builder setTimestamp(com.google.protobuf.Timestamp value) {
+ if (timestampBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ timestamp_ = value;
+ onChanged();
+ } else {
+ timestampBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public Builder setTimestamp(
+ com.google.protobuf.Timestamp.Builder builderForValue) {
+ if (timestampBuilder_ == null) {
+ timestamp_ = builderForValue.build();
+ onChanged();
+ } else {
+ timestampBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public Builder mergeTimestamp(com.google.protobuf.Timestamp value) {
+ if (timestampBuilder_ == null) {
+ if (timestamp_ != null) {
+ timestamp_ =
+ com.google.protobuf.Timestamp.newBuilder(timestamp_).mergeFrom(value).buildPartial();
+ } else {
+ timestamp_ = value;
+ }
+ onChanged();
+ } else {
+ timestampBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public Builder clearTimestamp() {
+ if (timestampBuilder_ == null) {
+ timestamp_ = null;
+ onChanged();
+ } else {
+ timestamp_ = null;
+ timestampBuilder_ = null;
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public com.google.protobuf.Timestamp.Builder getTimestampBuilder() {
+
+ onChanged();
+ return getTimestampFieldBuilder().getBuilder();
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ public com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder() {
+ if (timestampBuilder_ != null) {
+ return timestampBuilder_.getMessageOrBuilder();
+ } else {
+ return timestamp_ == null ?
+ com.google.protobuf.Timestamp.getDefaultInstance() : timestamp_;
+ }
+ }
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>
+ getTimestampFieldBuilder() {
+ if (timestampBuilder_ == null) {
+ timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
+ getTimestamp(),
+ getParentForChildren(),
+ isClean());
+ timestamp_ = null;
+ }
+ return timestampBuilder_;
+ }
+
+ private long callId_ ;
+ /**
+ * <pre>
+ * Uniquely identifies a call. The value must not be 0 in order to disambiguate
+ * from an unset value.
+ * Each call may have several log entries, they will all have the same call_id.
+ * Nothing is guaranteed about their value other than they are unique across
+ * different RPCs in the same gRPC process.
+ * </pre>
+ *
+ * <code>uint64 call_id = 2;</code>
+ */
+ public long getCallId() {
+ return callId_;
+ }
+ /**
+ * <pre>
+ * Uniquely identifies a call. The value must not be 0 in order to disambiguate
+ * from an unset value.
+ * Each call may have several log entries, they will all have the same call_id.
+ * Nothing is guaranteed about their value other than they are unique across
+ * different RPCs in the same gRPC process.
+ * </pre>
+ *
+ * <code>uint64 call_id = 2;</code>
+ */
+ public Builder setCallId(long value) {
+
+ callId_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * Uniquely identifies a call. The value must not be 0 in order to disambiguate
+ * from an unset value.
+ * Each call may have several log entries, they will all have the same call_id.
+ * Nothing is guaranteed about their value other than they are unique across
+ * different RPCs in the same gRPC process.
+ * </pre>
+ *
+ * <code>uint64 call_id = 2;</code>
+ */
+ public Builder clearCallId() {
+
+ callId_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ private long sequenceIdWithinCall_ ;
+ /**
+ * <pre>
+ * The entry sequence id for this call. The first GrpcLogEntry has a
+ * value of 1, to disambiguate from an unset value. The purpose of
+ * this field is to detect missing entries in environments where
+ * durability or ordering is not guaranteed.
+ * </pre>
+ *
+ * <code>uint64 sequence_id_within_call = 3;</code>
+ */
+ public long getSequenceIdWithinCall() {
+ return sequenceIdWithinCall_;
+ }
+ /**
+ * <pre>
+ * The entry sequence id for this call. The first GrpcLogEntry has a
+ * value of 1, to disambiguate from an unset value. The purpose of
+ * this field is to detect missing entries in environments where
+ * durability or ordering is not guaranteed.
+ * </pre>
+ *
+ * <code>uint64 sequence_id_within_call = 3;</code>
+ */
+ public Builder setSequenceIdWithinCall(long value) {
+
+ sequenceIdWithinCall_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * The entry sequence id for this call. The first GrpcLogEntry has a
+ * value of 1, to disambiguate from an unset value. The purpose of
+ * this field is to detect missing entries in environments where
+ * durability or ordering is not guaranteed.
+ * </pre>
+ *
+ * <code>uint64 sequence_id_within_call = 3;</code>
+ */
+ public Builder clearSequenceIdWithinCall() {
+
+ sequenceIdWithinCall_ = 0L;
+ onChanged();
+ return this;
+ }
+
+ private int type_ = 0;
+ /**
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.EventType type = 4;</code>
+ */
+ public int getTypeValue() {
+ return type_;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.EventType type = 4;</code>
+ */
+ public Builder setTypeValue(int value) {
+ type_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.EventType type = 4;</code>
+ */
+ public io.grpc.binarylog.v1.GrpcLogEntry.EventType getType() {
+ io.grpc.binarylog.v1.GrpcLogEntry.EventType result = io.grpc.binarylog.v1.GrpcLogEntry.EventType.valueOf(type_);
+ return result == null ? io.grpc.binarylog.v1.GrpcLogEntry.EventType.UNRECOGNIZED : result;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.EventType type = 4;</code>
+ */
+ public Builder setType(io.grpc.binarylog.v1.GrpcLogEntry.EventType value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ type_ = value.getNumber();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.EventType type = 4;</code>
+ */
+ public Builder clearType() {
+
+ type_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private int logger_ = 0;
+ /**
+ * <pre>
+ * One of the above Logger enum
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.Logger logger = 5;</code>
+ */
+ public int getLoggerValue() {
+ return logger_;
+ }
+ /**
+ * <pre>
+ * One of the above Logger enum
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.Logger logger = 5;</code>
+ */
+ public Builder setLoggerValue(int value) {
+ logger_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * One of the above Logger enum
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.Logger logger = 5;</code>
+ */
+ public io.grpc.binarylog.v1.GrpcLogEntry.Logger getLogger() {
+ io.grpc.binarylog.v1.GrpcLogEntry.Logger result = io.grpc.binarylog.v1.GrpcLogEntry.Logger.valueOf(logger_);
+ return result == null ? io.grpc.binarylog.v1.GrpcLogEntry.Logger.UNRECOGNIZED : result;
+ }
+ /**
+ * <pre>
+ * One of the above Logger enum
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.Logger logger = 5;</code>
+ */
+ public Builder setLogger(io.grpc.binarylog.v1.GrpcLogEntry.Logger value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ logger_ = value.getNumber();
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * One of the above Logger enum
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.Logger logger = 5;</code>
+ */
+ public Builder clearLogger() {
+
+ logger_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.ClientHeader, io.grpc.binarylog.v1.ClientHeader.Builder, io.grpc.binarylog.v1.ClientHeaderOrBuilder> clientHeaderBuilder_;
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public boolean hasClientHeader() {
+ return payloadCase_ == 6;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public io.grpc.binarylog.v1.ClientHeader getClientHeader() {
+ if (clientHeaderBuilder_ == null) {
+ if (payloadCase_ == 6) {
+ return (io.grpc.binarylog.v1.ClientHeader) payload_;
+ }
+ return io.grpc.binarylog.v1.ClientHeader.getDefaultInstance();
+ } else {
+ if (payloadCase_ == 6) {
+ return clientHeaderBuilder_.getMessage();
+ }
+ return io.grpc.binarylog.v1.ClientHeader.getDefaultInstance();
+ }
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public Builder setClientHeader(io.grpc.binarylog.v1.ClientHeader value) {
+ if (clientHeaderBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ payload_ = value;
+ onChanged();
+ } else {
+ clientHeaderBuilder_.setMessage(value);
+ }
+ payloadCase_ = 6;
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public Builder setClientHeader(
+ io.grpc.binarylog.v1.ClientHeader.Builder builderForValue) {
+ if (clientHeaderBuilder_ == null) {
+ payload_ = builderForValue.build();
+ onChanged();
+ } else {
+ clientHeaderBuilder_.setMessage(builderForValue.build());
+ }
+ payloadCase_ = 6;
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public Builder mergeClientHeader(io.grpc.binarylog.v1.ClientHeader value) {
+ if (clientHeaderBuilder_ == null) {
+ if (payloadCase_ == 6 &&
+ payload_ != io.grpc.binarylog.v1.ClientHeader.getDefaultInstance()) {
+ payload_ = io.grpc.binarylog.v1.ClientHeader.newBuilder((io.grpc.binarylog.v1.ClientHeader) payload_)
+ .mergeFrom(value).buildPartial();
+ } else {
+ payload_ = value;
+ }
+ onChanged();
+ } else {
+ if (payloadCase_ == 6) {
+ clientHeaderBuilder_.mergeFrom(value);
+ }
+ clientHeaderBuilder_.setMessage(value);
+ }
+ payloadCase_ = 6;
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public Builder clearClientHeader() {
+ if (clientHeaderBuilder_ == null) {
+ if (payloadCase_ == 6) {
+ payloadCase_ = 0;
+ payload_ = null;
+ onChanged();
+ }
+ } else {
+ if (payloadCase_ == 6) {
+ payloadCase_ = 0;
+ payload_ = null;
+ }
+ clientHeaderBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public io.grpc.binarylog.v1.ClientHeader.Builder getClientHeaderBuilder() {
+ return getClientHeaderFieldBuilder().getBuilder();
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ public io.grpc.binarylog.v1.ClientHeaderOrBuilder getClientHeaderOrBuilder() {
+ if ((payloadCase_ == 6) && (clientHeaderBuilder_ != null)) {
+ return clientHeaderBuilder_.getMessageOrBuilder();
+ } else {
+ if (payloadCase_ == 6) {
+ return (io.grpc.binarylog.v1.ClientHeader) payload_;
+ }
+ return io.grpc.binarylog.v1.ClientHeader.getDefaultInstance();
+ }
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.ClientHeader, io.grpc.binarylog.v1.ClientHeader.Builder, io.grpc.binarylog.v1.ClientHeaderOrBuilder>
+ getClientHeaderFieldBuilder() {
+ if (clientHeaderBuilder_ == null) {
+ if (!(payloadCase_ == 6)) {
+ payload_ = io.grpc.binarylog.v1.ClientHeader.getDefaultInstance();
+ }
+ clientHeaderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.ClientHeader, io.grpc.binarylog.v1.ClientHeader.Builder, io.grpc.binarylog.v1.ClientHeaderOrBuilder>(
+ (io.grpc.binarylog.v1.ClientHeader) payload_,
+ getParentForChildren(),
+ isClean());
+ payload_ = null;
+ }
+ payloadCase_ = 6;
+ onChanged();;
+ return clientHeaderBuilder_;
+ }
+
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.ServerHeader, io.grpc.binarylog.v1.ServerHeader.Builder, io.grpc.binarylog.v1.ServerHeaderOrBuilder> serverHeaderBuilder_;
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public boolean hasServerHeader() {
+ return payloadCase_ == 7;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public io.grpc.binarylog.v1.ServerHeader getServerHeader() {
+ if (serverHeaderBuilder_ == null) {
+ if (payloadCase_ == 7) {
+ return (io.grpc.binarylog.v1.ServerHeader) payload_;
+ }
+ return io.grpc.binarylog.v1.ServerHeader.getDefaultInstance();
+ } else {
+ if (payloadCase_ == 7) {
+ return serverHeaderBuilder_.getMessage();
+ }
+ return io.grpc.binarylog.v1.ServerHeader.getDefaultInstance();
+ }
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public Builder setServerHeader(io.grpc.binarylog.v1.ServerHeader value) {
+ if (serverHeaderBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ payload_ = value;
+ onChanged();
+ } else {
+ serverHeaderBuilder_.setMessage(value);
+ }
+ payloadCase_ = 7;
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public Builder setServerHeader(
+ io.grpc.binarylog.v1.ServerHeader.Builder builderForValue) {
+ if (serverHeaderBuilder_ == null) {
+ payload_ = builderForValue.build();
+ onChanged();
+ } else {
+ serverHeaderBuilder_.setMessage(builderForValue.build());
+ }
+ payloadCase_ = 7;
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public Builder mergeServerHeader(io.grpc.binarylog.v1.ServerHeader value) {
+ if (serverHeaderBuilder_ == null) {
+ if (payloadCase_ == 7 &&
+ payload_ != io.grpc.binarylog.v1.ServerHeader.getDefaultInstance()) {
+ payload_ = io.grpc.binarylog.v1.ServerHeader.newBuilder((io.grpc.binarylog.v1.ServerHeader) payload_)
+ .mergeFrom(value).buildPartial();
+ } else {
+ payload_ = value;
+ }
+ onChanged();
+ } else {
+ if (payloadCase_ == 7) {
+ serverHeaderBuilder_.mergeFrom(value);
+ }
+ serverHeaderBuilder_.setMessage(value);
+ }
+ payloadCase_ = 7;
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public Builder clearServerHeader() {
+ if (serverHeaderBuilder_ == null) {
+ if (payloadCase_ == 7) {
+ payloadCase_ = 0;
+ payload_ = null;
+ onChanged();
+ }
+ } else {
+ if (payloadCase_ == 7) {
+ payloadCase_ = 0;
+ payload_ = null;
+ }
+ serverHeaderBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public io.grpc.binarylog.v1.ServerHeader.Builder getServerHeaderBuilder() {
+ return getServerHeaderFieldBuilder().getBuilder();
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ public io.grpc.binarylog.v1.ServerHeaderOrBuilder getServerHeaderOrBuilder() {
+ if ((payloadCase_ == 7) && (serverHeaderBuilder_ != null)) {
+ return serverHeaderBuilder_.getMessageOrBuilder();
+ } else {
+ if (payloadCase_ == 7) {
+ return (io.grpc.binarylog.v1.ServerHeader) payload_;
+ }
+ return io.grpc.binarylog.v1.ServerHeader.getDefaultInstance();
+ }
+ }
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.ServerHeader, io.grpc.binarylog.v1.ServerHeader.Builder, io.grpc.binarylog.v1.ServerHeaderOrBuilder>
+ getServerHeaderFieldBuilder() {
+ if (serverHeaderBuilder_ == null) {
+ if (!(payloadCase_ == 7)) {
+ payload_ = io.grpc.binarylog.v1.ServerHeader.getDefaultInstance();
+ }
+ serverHeaderBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.ServerHeader, io.grpc.binarylog.v1.ServerHeader.Builder, io.grpc.binarylog.v1.ServerHeaderOrBuilder>(
+ (io.grpc.binarylog.v1.ServerHeader) payload_,
+ getParentForChildren(),
+ isClean());
+ payload_ = null;
+ }
+ payloadCase_ = 7;
+ onChanged();;
+ return serverHeaderBuilder_;
+ }
+
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Message, io.grpc.binarylog.v1.Message.Builder, io.grpc.binarylog.v1.MessageOrBuilder> messageBuilder_;
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public boolean hasMessage() {
+ return payloadCase_ == 8;
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public io.grpc.binarylog.v1.Message getMessage() {
+ if (messageBuilder_ == null) {
+ if (payloadCase_ == 8) {
+ return (io.grpc.binarylog.v1.Message) payload_;
+ }
+ return io.grpc.binarylog.v1.Message.getDefaultInstance();
+ } else {
+ if (payloadCase_ == 8) {
+ return messageBuilder_.getMessage();
+ }
+ return io.grpc.binarylog.v1.Message.getDefaultInstance();
+ }
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public Builder setMessage(io.grpc.binarylog.v1.Message value) {
+ if (messageBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ payload_ = value;
+ onChanged();
+ } else {
+ messageBuilder_.setMessage(value);
+ }
+ payloadCase_ = 8;
+ return this;
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public Builder setMessage(
+ io.grpc.binarylog.v1.Message.Builder builderForValue) {
+ if (messageBuilder_ == null) {
+ payload_ = builderForValue.build();
+ onChanged();
+ } else {
+ messageBuilder_.setMessage(builderForValue.build());
+ }
+ payloadCase_ = 8;
+ return this;
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public Builder mergeMessage(io.grpc.binarylog.v1.Message value) {
+ if (messageBuilder_ == null) {
+ if (payloadCase_ == 8 &&
+ payload_ != io.grpc.binarylog.v1.Message.getDefaultInstance()) {
+ payload_ = io.grpc.binarylog.v1.Message.newBuilder((io.grpc.binarylog.v1.Message) payload_)
+ .mergeFrom(value).buildPartial();
+ } else {
+ payload_ = value;
+ }
+ onChanged();
+ } else {
+ if (payloadCase_ == 8) {
+ messageBuilder_.mergeFrom(value);
+ }
+ messageBuilder_.setMessage(value);
+ }
+ payloadCase_ = 8;
+ return this;
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public Builder clearMessage() {
+ if (messageBuilder_ == null) {
+ if (payloadCase_ == 8) {
+ payloadCase_ = 0;
+ payload_ = null;
+ onChanged();
+ }
+ } else {
+ if (payloadCase_ == 8) {
+ payloadCase_ = 0;
+ payload_ = null;
+ }
+ messageBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public io.grpc.binarylog.v1.Message.Builder getMessageBuilder() {
+ return getMessageFieldBuilder().getBuilder();
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ public io.grpc.binarylog.v1.MessageOrBuilder getMessageOrBuilder() {
+ if ((payloadCase_ == 8) && (messageBuilder_ != null)) {
+ return messageBuilder_.getMessageOrBuilder();
+ } else {
+ if (payloadCase_ == 8) {
+ return (io.grpc.binarylog.v1.Message) payload_;
+ }
+ return io.grpc.binarylog.v1.Message.getDefaultInstance();
+ }
+ }
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Message, io.grpc.binarylog.v1.Message.Builder, io.grpc.binarylog.v1.MessageOrBuilder>
+ getMessageFieldBuilder() {
+ if (messageBuilder_ == null) {
+ if (!(payloadCase_ == 8)) {
+ payload_ = io.grpc.binarylog.v1.Message.getDefaultInstance();
+ }
+ messageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Message, io.grpc.binarylog.v1.Message.Builder, io.grpc.binarylog.v1.MessageOrBuilder>(
+ (io.grpc.binarylog.v1.Message) payload_,
+ getParentForChildren(),
+ isClean());
+ payload_ = null;
+ }
+ payloadCase_ = 8;
+ onChanged();;
+ return messageBuilder_;
+ }
+
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Trailer, io.grpc.binarylog.v1.Trailer.Builder, io.grpc.binarylog.v1.TrailerOrBuilder> trailerBuilder_;
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public boolean hasTrailer() {
+ return payloadCase_ == 9;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public io.grpc.binarylog.v1.Trailer getTrailer() {
+ if (trailerBuilder_ == null) {
+ if (payloadCase_ == 9) {
+ return (io.grpc.binarylog.v1.Trailer) payload_;
+ }
+ return io.grpc.binarylog.v1.Trailer.getDefaultInstance();
+ } else {
+ if (payloadCase_ == 9) {
+ return trailerBuilder_.getMessage();
+ }
+ return io.grpc.binarylog.v1.Trailer.getDefaultInstance();
+ }
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public Builder setTrailer(io.grpc.binarylog.v1.Trailer value) {
+ if (trailerBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ payload_ = value;
+ onChanged();
+ } else {
+ trailerBuilder_.setMessage(value);
+ }
+ payloadCase_ = 9;
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public Builder setTrailer(
+ io.grpc.binarylog.v1.Trailer.Builder builderForValue) {
+ if (trailerBuilder_ == null) {
+ payload_ = builderForValue.build();
+ onChanged();
+ } else {
+ trailerBuilder_.setMessage(builderForValue.build());
+ }
+ payloadCase_ = 9;
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public Builder mergeTrailer(io.grpc.binarylog.v1.Trailer value) {
+ if (trailerBuilder_ == null) {
+ if (payloadCase_ == 9 &&
+ payload_ != io.grpc.binarylog.v1.Trailer.getDefaultInstance()) {
+ payload_ = io.grpc.binarylog.v1.Trailer.newBuilder((io.grpc.binarylog.v1.Trailer) payload_)
+ .mergeFrom(value).buildPartial();
+ } else {
+ payload_ = value;
+ }
+ onChanged();
+ } else {
+ if (payloadCase_ == 9) {
+ trailerBuilder_.mergeFrom(value);
+ }
+ trailerBuilder_.setMessage(value);
+ }
+ payloadCase_ = 9;
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public Builder clearTrailer() {
+ if (trailerBuilder_ == null) {
+ if (payloadCase_ == 9) {
+ payloadCase_ = 0;
+ payload_ = null;
+ onChanged();
+ }
+ } else {
+ if (payloadCase_ == 9) {
+ payloadCase_ = 0;
+ payload_ = null;
+ }
+ trailerBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public io.grpc.binarylog.v1.Trailer.Builder getTrailerBuilder() {
+ return getTrailerFieldBuilder().getBuilder();
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ public io.grpc.binarylog.v1.TrailerOrBuilder getTrailerOrBuilder() {
+ if ((payloadCase_ == 9) && (trailerBuilder_ != null)) {
+ return trailerBuilder_.getMessageOrBuilder();
+ } else {
+ if (payloadCase_ == 9) {
+ return (io.grpc.binarylog.v1.Trailer) payload_;
+ }
+ return io.grpc.binarylog.v1.Trailer.getDefaultInstance();
+ }
+ }
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Trailer, io.grpc.binarylog.v1.Trailer.Builder, io.grpc.binarylog.v1.TrailerOrBuilder>
+ getTrailerFieldBuilder() {
+ if (trailerBuilder_ == null) {
+ if (!(payloadCase_ == 9)) {
+ payload_ = io.grpc.binarylog.v1.Trailer.getDefaultInstance();
+ }
+ trailerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Trailer, io.grpc.binarylog.v1.Trailer.Builder, io.grpc.binarylog.v1.TrailerOrBuilder>(
+ (io.grpc.binarylog.v1.Trailer) payload_,
+ getParentForChildren(),
+ isClean());
+ payload_ = null;
+ }
+ payloadCase_ = 9;
+ onChanged();;
+ return trailerBuilder_;
+ }
+
+ private boolean payloadTruncated_ ;
+ /**
+ * <pre>
+ * true if payload does not represent the full message or metadata.
+ * </pre>
+ *
+ * <code>bool payload_truncated = 10;</code>
+ */
+ public boolean getPayloadTruncated() {
+ return payloadTruncated_;
+ }
+ /**
+ * <pre>
+ * true if payload does not represent the full message or metadata.
+ * </pre>
+ *
+ * <code>bool payload_truncated = 10;</code>
+ */
+ public Builder setPayloadTruncated(boolean value) {
+
+ payloadTruncated_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * true if payload does not represent the full message or metadata.
+ * </pre>
+ *
+ * <code>bool payload_truncated = 10;</code>
+ */
+ public Builder clearPayloadTruncated() {
+
+ payloadTruncated_ = false;
+ onChanged();
+ return this;
+ }
+
+ private io.grpc.binarylog.v1.Address peer_ = null;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Address, io.grpc.binarylog.v1.Address.Builder, io.grpc.binarylog.v1.AddressOrBuilder> peerBuilder_;
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public boolean hasPeer() {
+ return peerBuilder_ != null || peer_ != null;
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public io.grpc.binarylog.v1.Address getPeer() {
+ if (peerBuilder_ == null) {
+ return peer_ == null ? io.grpc.binarylog.v1.Address.getDefaultInstance() : peer_;
+ } else {
+ return peerBuilder_.getMessage();
+ }
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public Builder setPeer(io.grpc.binarylog.v1.Address value) {
+ if (peerBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ peer_ = value;
+ onChanged();
+ } else {
+ peerBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public Builder setPeer(
+ io.grpc.binarylog.v1.Address.Builder builderForValue) {
+ if (peerBuilder_ == null) {
+ peer_ = builderForValue.build();
+ onChanged();
+ } else {
+ peerBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public Builder mergePeer(io.grpc.binarylog.v1.Address value) {
+ if (peerBuilder_ == null) {
+ if (peer_ != null) {
+ peer_ =
+ io.grpc.binarylog.v1.Address.newBuilder(peer_).mergeFrom(value).buildPartial();
+ } else {
+ peer_ = value;
+ }
+ onChanged();
+ } else {
+ peerBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public Builder clearPeer() {
+ if (peerBuilder_ == null) {
+ peer_ = null;
+ onChanged();
+ } else {
+ peer_ = null;
+ peerBuilder_ = null;
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public io.grpc.binarylog.v1.Address.Builder getPeerBuilder() {
+
+ onChanged();
+ return getPeerFieldBuilder().getBuilder();
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ public io.grpc.binarylog.v1.AddressOrBuilder getPeerOrBuilder() {
+ if (peerBuilder_ != null) {
+ return peerBuilder_.getMessageOrBuilder();
+ } else {
+ return peer_ == null ?
+ io.grpc.binarylog.v1.Address.getDefaultInstance() : peer_;
+ }
+ }
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Address, io.grpc.binarylog.v1.Address.Builder, io.grpc.binarylog.v1.AddressOrBuilder>
+ getPeerFieldBuilder() {
+ if (peerBuilder_ == null) {
+ peerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Address, io.grpc.binarylog.v1.Address.Builder, io.grpc.binarylog.v1.AddressOrBuilder>(
+ getPeer(),
+ getParentForChildren(),
+ isClean());
+ peer_ = null;
+ }
+ return peerBuilder_;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:grpc.binarylog.v1.GrpcLogEntry)
+ }
+
+ // @@protoc_insertion_point(class_scope:grpc.binarylog.v1.GrpcLogEntry)
+ private static final io.grpc.binarylog.v1.GrpcLogEntry DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new io.grpc.binarylog.v1.GrpcLogEntry();
+ }
+
+ public static io.grpc.binarylog.v1.GrpcLogEntry getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<GrpcLogEntry>
+ PARSER = new com.google.protobuf.AbstractParser<GrpcLogEntry>() {
+ public GrpcLogEntry parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new GrpcLogEntry(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<GrpcLogEntry> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<GrpcLogEntry> getParserForType() {
+ return PARSER;
+ }
+
+ public io.grpc.binarylog.v1.GrpcLogEntry getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/GrpcLogEntryOrBuilder.java b/services/src/generated/main/java/io/grpc/binarylog/v1/GrpcLogEntryOrBuilder.java
new file mode 100644
index 000000000..46fb28f02
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/GrpcLogEntryOrBuilder.java
@@ -0,0 +1,197 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+public interface GrpcLogEntryOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:grpc.binarylog.v1.GrpcLogEntry)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ boolean hasTimestamp();
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ com.google.protobuf.Timestamp getTimestamp();
+ /**
+ * <pre>
+ * The timestamp of the binary log message
+ * </pre>
+ *
+ * <code>.google.protobuf.Timestamp timestamp = 1;</code>
+ */
+ com.google.protobuf.TimestampOrBuilder getTimestampOrBuilder();
+
+ /**
+ * <pre>
+ * Uniquely identifies a call. The value must not be 0 in order to disambiguate
+ * from an unset value.
+ * Each call may have several log entries, they will all have the same call_id.
+ * Nothing is guaranteed about their value other than they are unique across
+ * different RPCs in the same gRPC process.
+ * </pre>
+ *
+ * <code>uint64 call_id = 2;</code>
+ */
+ long getCallId();
+
+ /**
+ * <pre>
+ * The entry sequence id for this call. The first GrpcLogEntry has a
+ * value of 1, to disambiguate from an unset value. The purpose of
+ * this field is to detect missing entries in environments where
+ * durability or ordering is not guaranteed.
+ * </pre>
+ *
+ * <code>uint64 sequence_id_within_call = 3;</code>
+ */
+ long getSequenceIdWithinCall();
+
+ /**
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.EventType type = 4;</code>
+ */
+ int getTypeValue();
+ /**
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.EventType type = 4;</code>
+ */
+ io.grpc.binarylog.v1.GrpcLogEntry.EventType getType();
+
+ /**
+ * <pre>
+ * One of the above Logger enum
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.Logger logger = 5;</code>
+ */
+ int getLoggerValue();
+ /**
+ * <pre>
+ * One of the above Logger enum
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.GrpcLogEntry.Logger logger = 5;</code>
+ */
+ io.grpc.binarylog.v1.GrpcLogEntry.Logger getLogger();
+
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ boolean hasClientHeader();
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ io.grpc.binarylog.v1.ClientHeader getClientHeader();
+ /**
+ * <code>.grpc.binarylog.v1.ClientHeader client_header = 6;</code>
+ */
+ io.grpc.binarylog.v1.ClientHeaderOrBuilder getClientHeaderOrBuilder();
+
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ boolean hasServerHeader();
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ io.grpc.binarylog.v1.ServerHeader getServerHeader();
+ /**
+ * <code>.grpc.binarylog.v1.ServerHeader server_header = 7;</code>
+ */
+ io.grpc.binarylog.v1.ServerHeaderOrBuilder getServerHeaderOrBuilder();
+
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ boolean hasMessage();
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ io.grpc.binarylog.v1.Message getMessage();
+ /**
+ * <pre>
+ * Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Message message = 8;</code>
+ */
+ io.grpc.binarylog.v1.MessageOrBuilder getMessageOrBuilder();
+
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ boolean hasTrailer();
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ io.grpc.binarylog.v1.Trailer getTrailer();
+ /**
+ * <code>.grpc.binarylog.v1.Trailer trailer = 9;</code>
+ */
+ io.grpc.binarylog.v1.TrailerOrBuilder getTrailerOrBuilder();
+
+ /**
+ * <pre>
+ * true if payload does not represent the full message or metadata.
+ * </pre>
+ *
+ * <code>bool payload_truncated = 10;</code>
+ */
+ boolean getPayloadTruncated();
+
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ boolean hasPeer();
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ io.grpc.binarylog.v1.Address getPeer();
+ /**
+ * <pre>
+ * Peer address information, will only be recorded on the first
+ * incoming event. On client side, peer is logged on
+ * EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ * the case of trailers-only. On server side, peer is always
+ * logged on EVENT_TYPE_CLIENT_HEADER.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Address peer = 11;</code>
+ */
+ io.grpc.binarylog.v1.AddressOrBuilder getPeerOrBuilder();
+
+ public io.grpc.binarylog.v1.GrpcLogEntry.PayloadCase getPayloadCase();
+}
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/Message.java b/services/src/generated/main/java/io/grpc/binarylog/v1/Message.java
new file mode 100644
index 000000000..bdde8f3ca
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/Message.java
@@ -0,0 +1,552 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+/**
+ * <pre>
+ * Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.Message}
+ */
+public final class Message extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:grpc.binarylog.v1.Message)
+ MessageOrBuilder {
+private static final long serialVersionUID = 0L;
+ // Use Message.newBuilder() to construct.
+ private Message(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private Message() {
+ length_ = 0;
+ data_ = com.google.protobuf.ByteString.EMPTY;
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Message(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 8: {
+
+ length_ = input.readUInt32();
+ break;
+ }
+ case 18: {
+
+ data_ = input.readBytes();
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Message_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Message_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.Message.class, io.grpc.binarylog.v1.Message.Builder.class);
+ }
+
+ public static final int LENGTH_FIELD_NUMBER = 1;
+ private int length_;
+ /**
+ * <pre>
+ * Length of the message. It may not be the same as the length of the
+ * data field, as the logging payload can be truncated or omitted.
+ * </pre>
+ *
+ * <code>uint32 length = 1;</code>
+ */
+ public int getLength() {
+ return length_;
+ }
+
+ public static final int DATA_FIELD_NUMBER = 2;
+ private com.google.protobuf.ByteString data_;
+ /**
+ * <pre>
+ * May be truncated or omitted.
+ * </pre>
+ *
+ * <code>bytes data = 2;</code>
+ */
+ public com.google.protobuf.ByteString getData() {
+ return data_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (length_ != 0) {
+ output.writeUInt32(1, length_);
+ }
+ if (!data_.isEmpty()) {
+ output.writeBytes(2, data_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (length_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt32Size(1, length_);
+ }
+ if (!data_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(2, data_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof io.grpc.binarylog.v1.Message)) {
+ return super.equals(obj);
+ }
+ io.grpc.binarylog.v1.Message other = (io.grpc.binarylog.v1.Message) obj;
+
+ boolean result = true;
+ result = result && (getLength()
+ == other.getLength());
+ result = result && getData()
+ .equals(other.getData());
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + LENGTH_FIELD_NUMBER;
+ hash = (53 * hash) + getLength();
+ hash = (37 * hash) + DATA_FIELD_NUMBER;
+ hash = (53 * hash) + getData().hashCode();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static io.grpc.binarylog.v1.Message parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Message parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Message parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Message parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Message parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Message parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Message parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Message parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Message parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Message parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Message parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Message parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(io.grpc.binarylog.v1.Message prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * <pre>
+ * Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.Message}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:grpc.binarylog.v1.Message)
+ io.grpc.binarylog.v1.MessageOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Message_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Message_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.Message.class, io.grpc.binarylog.v1.Message.Builder.class);
+ }
+
+ // Construct using io.grpc.binarylog.v1.Message.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ length_ = 0;
+
+ data_ = com.google.protobuf.ByteString.EMPTY;
+
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Message_descriptor;
+ }
+
+ public io.grpc.binarylog.v1.Message getDefaultInstanceForType() {
+ return io.grpc.binarylog.v1.Message.getDefaultInstance();
+ }
+
+ public io.grpc.binarylog.v1.Message build() {
+ io.grpc.binarylog.v1.Message result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public io.grpc.binarylog.v1.Message buildPartial() {
+ io.grpc.binarylog.v1.Message result = new io.grpc.binarylog.v1.Message(this);
+ result.length_ = length_;
+ result.data_ = data_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof io.grpc.binarylog.v1.Message) {
+ return mergeFrom((io.grpc.binarylog.v1.Message)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(io.grpc.binarylog.v1.Message other) {
+ if (other == io.grpc.binarylog.v1.Message.getDefaultInstance()) return this;
+ if (other.getLength() != 0) {
+ setLength(other.getLength());
+ }
+ if (other.getData() != com.google.protobuf.ByteString.EMPTY) {
+ setData(other.getData());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ io.grpc.binarylog.v1.Message parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (io.grpc.binarylog.v1.Message) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private int length_ ;
+ /**
+ * <pre>
+ * Length of the message. It may not be the same as the length of the
+ * data field, as the logging payload can be truncated or omitted.
+ * </pre>
+ *
+ * <code>uint32 length = 1;</code>
+ */
+ public int getLength() {
+ return length_;
+ }
+ /**
+ * <pre>
+ * Length of the message. It may not be the same as the length of the
+ * data field, as the logging payload can be truncated or omitted.
+ * </pre>
+ *
+ * <code>uint32 length = 1;</code>
+ */
+ public Builder setLength(int value) {
+
+ length_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * Length of the message. It may not be the same as the length of the
+ * data field, as the logging payload can be truncated or omitted.
+ * </pre>
+ *
+ * <code>uint32 length = 1;</code>
+ */
+ public Builder clearLength() {
+
+ length_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+ /**
+ * <pre>
+ * May be truncated or omitted.
+ * </pre>
+ *
+ * <code>bytes data = 2;</code>
+ */
+ public com.google.protobuf.ByteString getData() {
+ return data_;
+ }
+ /**
+ * <pre>
+ * May be truncated or omitted.
+ * </pre>
+ *
+ * <code>bytes data = 2;</code>
+ */
+ public Builder setData(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ data_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * May be truncated or omitted.
+ * </pre>
+ *
+ * <code>bytes data = 2;</code>
+ */
+ public Builder clearData() {
+
+ data_ = getDefaultInstance().getData();
+ onChanged();
+ return this;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:grpc.binarylog.v1.Message)
+ }
+
+ // @@protoc_insertion_point(class_scope:grpc.binarylog.v1.Message)
+ private static final io.grpc.binarylog.v1.Message DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new io.grpc.binarylog.v1.Message();
+ }
+
+ public static io.grpc.binarylog.v1.Message getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<Message>
+ PARSER = new com.google.protobuf.AbstractParser<Message>() {
+ public Message parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Message(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<Message> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<Message> getParserForType() {
+ return PARSER;
+ }
+
+ public io.grpc.binarylog.v1.Message getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/MessageOrBuilder.java b/services/src/generated/main/java/io/grpc/binarylog/v1/MessageOrBuilder.java
new file mode 100644
index 000000000..084cd35ff
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/MessageOrBuilder.java
@@ -0,0 +1,28 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+public interface MessageOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:grpc.binarylog.v1.Message)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <pre>
+ * Length of the message. It may not be the same as the length of the
+ * data field, as the logging payload can be truncated or omitted.
+ * </pre>
+ *
+ * <code>uint32 length = 1;</code>
+ */
+ int getLength();
+
+ /**
+ * <pre>
+ * May be truncated or omitted.
+ * </pre>
+ *
+ * <code>bytes data = 2;</code>
+ */
+ com.google.protobuf.ByteString getData();
+}
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/Metadata.java b/services/src/generated/main/java/io/grpc/binarylog/v1/Metadata.java
new file mode 100644
index 000000000..56052d5d8
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/Metadata.java
@@ -0,0 +1,778 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+/**
+ * <pre>
+ * A list of metadata pairs, used in the payload of client header,
+ * server header, and server trailer.
+ * Implementations may omit some entries to honor the header limits
+ * of GRPC_BINARY_LOG_CONFIG.
+ * Header keys added by gRPC are omitted. To be more specific,
+ * implementations will not log the following entries, and this is
+ * not to be treated as a truncation:
+ * - entries handled by grpc that are not user visible, such as those
+ * that begin with 'grpc-' (with exception of grpc-trace-bin)
+ * or keys like 'lb-token'
+ * - transport specific entries, including but not limited to:
+ * ':path', ':authority', 'content-encoding', 'user-agent', 'te', etc
+ * - entries added for call credentials
+ * Implementations must always log grpc-trace-bin if it is present.
+ * Practically speaking it will only be visible on server side because
+ * grpc-trace-bin is managed by low level client side mechanisms
+ * inaccessible from the application level. On server side, the
+ * header is just a normal metadata key.
+ * The pair will not count towards the size limit.
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.Metadata}
+ */
+public final class Metadata extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:grpc.binarylog.v1.Metadata)
+ MetadataOrBuilder {
+private static final long serialVersionUID = 0L;
+ // Use Metadata.newBuilder() to construct.
+ private Metadata(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private Metadata() {
+ entry_ = java.util.Collections.emptyList();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Metadata(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+ entry_ = new java.util.ArrayList<io.grpc.binarylog.v1.MetadataEntry>();
+ mutable_bitField0_ |= 0x00000001;
+ }
+ entry_.add(
+ input.readMessage(io.grpc.binarylog.v1.MetadataEntry.parser(), extensionRegistry));
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
+ entry_ = java.util.Collections.unmodifiableList(entry_);
+ }
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Metadata_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Metadata_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.Metadata.class, io.grpc.binarylog.v1.Metadata.Builder.class);
+ }
+
+ public static final int ENTRY_FIELD_NUMBER = 1;
+ private java.util.List<io.grpc.binarylog.v1.MetadataEntry> entry_;
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public java.util.List<io.grpc.binarylog.v1.MetadataEntry> getEntryList() {
+ return entry_;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public java.util.List<? extends io.grpc.binarylog.v1.MetadataEntryOrBuilder>
+ getEntryOrBuilderList() {
+ return entry_;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public int getEntryCount() {
+ return entry_.size();
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataEntry getEntry(int index) {
+ return entry_.get(index);
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataEntryOrBuilder getEntryOrBuilder(
+ int index) {
+ return entry_.get(index);
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ for (int i = 0; i < entry_.size(); i++) {
+ output.writeMessage(1, entry_.get(i));
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ for (int i = 0; i < entry_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, entry_.get(i));
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof io.grpc.binarylog.v1.Metadata)) {
+ return super.equals(obj);
+ }
+ io.grpc.binarylog.v1.Metadata other = (io.grpc.binarylog.v1.Metadata) obj;
+
+ boolean result = true;
+ result = result && getEntryList()
+ .equals(other.getEntryList());
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (getEntryCount() > 0) {
+ hash = (37 * hash) + ENTRY_FIELD_NUMBER;
+ hash = (53 * hash) + getEntryList().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static io.grpc.binarylog.v1.Metadata parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Metadata parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(io.grpc.binarylog.v1.Metadata prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * <pre>
+ * A list of metadata pairs, used in the payload of client header,
+ * server header, and server trailer.
+ * Implementations may omit some entries to honor the header limits
+ * of GRPC_BINARY_LOG_CONFIG.
+ * Header keys added by gRPC are omitted. To be more specific,
+ * implementations will not log the following entries, and this is
+ * not to be treated as a truncation:
+ * - entries handled by grpc that are not user visible, such as those
+ * that begin with 'grpc-' (with exception of grpc-trace-bin)
+ * or keys like 'lb-token'
+ * - transport specific entries, including but not limited to:
+ * ':path', ':authority', 'content-encoding', 'user-agent', 'te', etc
+ * - entries added for call credentials
+ * Implementations must always log grpc-trace-bin if it is present.
+ * Practically speaking it will only be visible on server side because
+ * grpc-trace-bin is managed by low level client side mechanisms
+ * inaccessible from the application level. On server side, the
+ * header is just a normal metadata key.
+ * The pair will not count towards the size limit.
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.Metadata}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:grpc.binarylog.v1.Metadata)
+ io.grpc.binarylog.v1.MetadataOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Metadata_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Metadata_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.Metadata.class, io.grpc.binarylog.v1.Metadata.Builder.class);
+ }
+
+ // Construct using io.grpc.binarylog.v1.Metadata.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ getEntryFieldBuilder();
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ if (entryBuilder_ == null) {
+ entry_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ } else {
+ entryBuilder_.clear();
+ }
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Metadata_descriptor;
+ }
+
+ public io.grpc.binarylog.v1.Metadata getDefaultInstanceForType() {
+ return io.grpc.binarylog.v1.Metadata.getDefaultInstance();
+ }
+
+ public io.grpc.binarylog.v1.Metadata build() {
+ io.grpc.binarylog.v1.Metadata result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public io.grpc.binarylog.v1.Metadata buildPartial() {
+ io.grpc.binarylog.v1.Metadata result = new io.grpc.binarylog.v1.Metadata(this);
+ int from_bitField0_ = bitField0_;
+ if (entryBuilder_ == null) {
+ if (((bitField0_ & 0x00000001) == 0x00000001)) {
+ entry_ = java.util.Collections.unmodifiableList(entry_);
+ bitField0_ = (bitField0_ & ~0x00000001);
+ }
+ result.entry_ = entry_;
+ } else {
+ result.entry_ = entryBuilder_.build();
+ }
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof io.grpc.binarylog.v1.Metadata) {
+ return mergeFrom((io.grpc.binarylog.v1.Metadata)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(io.grpc.binarylog.v1.Metadata other) {
+ if (other == io.grpc.binarylog.v1.Metadata.getDefaultInstance()) return this;
+ if (entryBuilder_ == null) {
+ if (!other.entry_.isEmpty()) {
+ if (entry_.isEmpty()) {
+ entry_ = other.entry_;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ } else {
+ ensureEntryIsMutable();
+ entry_.addAll(other.entry_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.entry_.isEmpty()) {
+ if (entryBuilder_.isEmpty()) {
+ entryBuilder_.dispose();
+ entryBuilder_ = null;
+ entry_ = other.entry_;
+ bitField0_ = (bitField0_ & ~0x00000001);
+ entryBuilder_ =
+ com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+ getEntryFieldBuilder() : null;
+ } else {
+ entryBuilder_.addAllMessages(other.entry_);
+ }
+ }
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ io.grpc.binarylog.v1.Metadata parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (io.grpc.binarylog.v1.Metadata) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private java.util.List<io.grpc.binarylog.v1.MetadataEntry> entry_ =
+ java.util.Collections.emptyList();
+ private void ensureEntryIsMutable() {
+ if (!((bitField0_ & 0x00000001) == 0x00000001)) {
+ entry_ = new java.util.ArrayList<io.grpc.binarylog.v1.MetadataEntry>(entry_);
+ bitField0_ |= 0x00000001;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilderV3<
+ io.grpc.binarylog.v1.MetadataEntry, io.grpc.binarylog.v1.MetadataEntry.Builder, io.grpc.binarylog.v1.MetadataEntryOrBuilder> entryBuilder_;
+
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public java.util.List<io.grpc.binarylog.v1.MetadataEntry> getEntryList() {
+ if (entryBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(entry_);
+ } else {
+ return entryBuilder_.getMessageList();
+ }
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public int getEntryCount() {
+ if (entryBuilder_ == null) {
+ return entry_.size();
+ } else {
+ return entryBuilder_.getCount();
+ }
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataEntry getEntry(int index) {
+ if (entryBuilder_ == null) {
+ return entry_.get(index);
+ } else {
+ return entryBuilder_.getMessage(index);
+ }
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public Builder setEntry(
+ int index, io.grpc.binarylog.v1.MetadataEntry value) {
+ if (entryBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEntryIsMutable();
+ entry_.set(index, value);
+ onChanged();
+ } else {
+ entryBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public Builder setEntry(
+ int index, io.grpc.binarylog.v1.MetadataEntry.Builder builderForValue) {
+ if (entryBuilder_ == null) {
+ ensureEntryIsMutable();
+ entry_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ entryBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public Builder addEntry(io.grpc.binarylog.v1.MetadataEntry value) {
+ if (entryBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEntryIsMutable();
+ entry_.add(value);
+ onChanged();
+ } else {
+ entryBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public Builder addEntry(
+ int index, io.grpc.binarylog.v1.MetadataEntry value) {
+ if (entryBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureEntryIsMutable();
+ entry_.add(index, value);
+ onChanged();
+ } else {
+ entryBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public Builder addEntry(
+ io.grpc.binarylog.v1.MetadataEntry.Builder builderForValue) {
+ if (entryBuilder_ == null) {
+ ensureEntryIsMutable();
+ entry_.add(builderForValue.build());
+ onChanged();
+ } else {
+ entryBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public Builder addEntry(
+ int index, io.grpc.binarylog.v1.MetadataEntry.Builder builderForValue) {
+ if (entryBuilder_ == null) {
+ ensureEntryIsMutable();
+ entry_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ entryBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public Builder addAllEntry(
+ java.lang.Iterable<? extends io.grpc.binarylog.v1.MetadataEntry> values) {
+ if (entryBuilder_ == null) {
+ ensureEntryIsMutable();
+ com.google.protobuf.AbstractMessageLite.Builder.addAll(
+ values, entry_);
+ onChanged();
+ } else {
+ entryBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public Builder clearEntry() {
+ if (entryBuilder_ == null) {
+ entry_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000001);
+ onChanged();
+ } else {
+ entryBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public Builder removeEntry(int index) {
+ if (entryBuilder_ == null) {
+ ensureEntryIsMutable();
+ entry_.remove(index);
+ onChanged();
+ } else {
+ entryBuilder_.remove(index);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataEntry.Builder getEntryBuilder(
+ int index) {
+ return getEntryFieldBuilder().getBuilder(index);
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataEntryOrBuilder getEntryOrBuilder(
+ int index) {
+ if (entryBuilder_ == null) {
+ return entry_.get(index); } else {
+ return entryBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public java.util.List<? extends io.grpc.binarylog.v1.MetadataEntryOrBuilder>
+ getEntryOrBuilderList() {
+ if (entryBuilder_ != null) {
+ return entryBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(entry_);
+ }
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataEntry.Builder addEntryBuilder() {
+ return getEntryFieldBuilder().addBuilder(
+ io.grpc.binarylog.v1.MetadataEntry.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataEntry.Builder addEntryBuilder(
+ int index) {
+ return getEntryFieldBuilder().addBuilder(
+ index, io.grpc.binarylog.v1.MetadataEntry.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ public java.util.List<io.grpc.binarylog.v1.MetadataEntry.Builder>
+ getEntryBuilderList() {
+ return getEntryFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilderV3<
+ io.grpc.binarylog.v1.MetadataEntry, io.grpc.binarylog.v1.MetadataEntry.Builder, io.grpc.binarylog.v1.MetadataEntryOrBuilder>
+ getEntryFieldBuilder() {
+ if (entryBuilder_ == null) {
+ entryBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+ io.grpc.binarylog.v1.MetadataEntry, io.grpc.binarylog.v1.MetadataEntry.Builder, io.grpc.binarylog.v1.MetadataEntryOrBuilder>(
+ entry_,
+ ((bitField0_ & 0x00000001) == 0x00000001),
+ getParentForChildren(),
+ isClean());
+ entry_ = null;
+ }
+ return entryBuilder_;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:grpc.binarylog.v1.Metadata)
+ }
+
+ // @@protoc_insertion_point(class_scope:grpc.binarylog.v1.Metadata)
+ private static final io.grpc.binarylog.v1.Metadata DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new io.grpc.binarylog.v1.Metadata();
+ }
+
+ public static io.grpc.binarylog.v1.Metadata getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<Metadata>
+ PARSER = new com.google.protobuf.AbstractParser<Metadata>() {
+ public Metadata parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Metadata(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<Metadata> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<Metadata> getParserForType() {
+ return PARSER;
+ }
+
+ public io.grpc.binarylog.v1.Metadata getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/MetadataEntry.java b/services/src/generated/main/java/io/grpc/binarylog/v1/MetadataEntry.java
new file mode 100644
index 000000000..ce48266ed
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/MetadataEntry.java
@@ -0,0 +1,585 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+/**
+ * <pre>
+ * A metadata key value pair
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.MetadataEntry}
+ */
+public final class MetadataEntry extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:grpc.binarylog.v1.MetadataEntry)
+ MetadataEntryOrBuilder {
+private static final long serialVersionUID = 0L;
+ // Use MetadataEntry.newBuilder() to construct.
+ private MetadataEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private MetadataEntry() {
+ key_ = "";
+ value_ = com.google.protobuf.ByteString.EMPTY;
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private MetadataEntry(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ java.lang.String s = input.readStringRequireUtf8();
+
+ key_ = s;
+ break;
+ }
+ case 18: {
+
+ value_ = input.readBytes();
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_MetadataEntry_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_MetadataEntry_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.MetadataEntry.class, io.grpc.binarylog.v1.MetadataEntry.Builder.class);
+ }
+
+ public static final int KEY_FIELD_NUMBER = 1;
+ private volatile java.lang.Object key_;
+ /**
+ * <code>string key = 1;</code>
+ */
+ public java.lang.String getKey() {
+ java.lang.Object ref = key_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ key_ = s;
+ return s;
+ }
+ }
+ /**
+ * <code>string key = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getKeyBytes() {
+ java.lang.Object ref = key_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ key_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int VALUE_FIELD_NUMBER = 2;
+ private com.google.protobuf.ByteString value_;
+ /**
+ * <code>bytes value = 2;</code>
+ */
+ public com.google.protobuf.ByteString getValue() {
+ return value_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!getKeyBytes().isEmpty()) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
+ }
+ if (!value_.isEmpty()) {
+ output.writeBytes(2, value_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!getKeyBytes().isEmpty()) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
+ }
+ if (!value_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(2, value_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof io.grpc.binarylog.v1.MetadataEntry)) {
+ return super.equals(obj);
+ }
+ io.grpc.binarylog.v1.MetadataEntry other = (io.grpc.binarylog.v1.MetadataEntry) obj;
+
+ boolean result = true;
+ result = result && getKey()
+ .equals(other.getKey());
+ result = result && getValue()
+ .equals(other.getValue());
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + KEY_FIELD_NUMBER;
+ hash = (53 * hash) + getKey().hashCode();
+ hash = (37 * hash) + VALUE_FIELD_NUMBER;
+ hash = (53 * hash) + getValue().hashCode();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.MetadataEntry parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(io.grpc.binarylog.v1.MetadataEntry prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * <pre>
+ * A metadata key value pair
+ * </pre>
+ *
+ * Protobuf type {@code grpc.binarylog.v1.MetadataEntry}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:grpc.binarylog.v1.MetadataEntry)
+ io.grpc.binarylog.v1.MetadataEntryOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_MetadataEntry_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_MetadataEntry_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.MetadataEntry.class, io.grpc.binarylog.v1.MetadataEntry.Builder.class);
+ }
+
+ // Construct using io.grpc.binarylog.v1.MetadataEntry.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ key_ = "";
+
+ value_ = com.google.protobuf.ByteString.EMPTY;
+
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_MetadataEntry_descriptor;
+ }
+
+ public io.grpc.binarylog.v1.MetadataEntry getDefaultInstanceForType() {
+ return io.grpc.binarylog.v1.MetadataEntry.getDefaultInstance();
+ }
+
+ public io.grpc.binarylog.v1.MetadataEntry build() {
+ io.grpc.binarylog.v1.MetadataEntry result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public io.grpc.binarylog.v1.MetadataEntry buildPartial() {
+ io.grpc.binarylog.v1.MetadataEntry result = new io.grpc.binarylog.v1.MetadataEntry(this);
+ result.key_ = key_;
+ result.value_ = value_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof io.grpc.binarylog.v1.MetadataEntry) {
+ return mergeFrom((io.grpc.binarylog.v1.MetadataEntry)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(io.grpc.binarylog.v1.MetadataEntry other) {
+ if (other == io.grpc.binarylog.v1.MetadataEntry.getDefaultInstance()) return this;
+ if (!other.getKey().isEmpty()) {
+ key_ = other.key_;
+ onChanged();
+ }
+ if (other.getValue() != com.google.protobuf.ByteString.EMPTY) {
+ setValue(other.getValue());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ io.grpc.binarylog.v1.MetadataEntry parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (io.grpc.binarylog.v1.MetadataEntry) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private java.lang.Object key_ = "";
+ /**
+ * <code>string key = 1;</code>
+ */
+ public java.lang.String getKey() {
+ java.lang.Object ref = key_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ key_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>string key = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getKeyBytes() {
+ java.lang.Object ref = key_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ key_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>string key = 1;</code>
+ */
+ public Builder setKey(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ key_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>string key = 1;</code>
+ */
+ public Builder clearKey() {
+
+ key_ = getDefaultInstance().getKey();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>string key = 1;</code>
+ */
+ public Builder setKeyBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ key_ = value;
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.ByteString value_ = com.google.protobuf.ByteString.EMPTY;
+ /**
+ * <code>bytes value = 2;</code>
+ */
+ public com.google.protobuf.ByteString getValue() {
+ return value_;
+ }
+ /**
+ * <code>bytes value = 2;</code>
+ */
+ public Builder setValue(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ value_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>bytes value = 2;</code>
+ */
+ public Builder clearValue() {
+
+ value_ = getDefaultInstance().getValue();
+ onChanged();
+ return this;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:grpc.binarylog.v1.MetadataEntry)
+ }
+
+ // @@protoc_insertion_point(class_scope:grpc.binarylog.v1.MetadataEntry)
+ private static final io.grpc.binarylog.v1.MetadataEntry DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new io.grpc.binarylog.v1.MetadataEntry();
+ }
+
+ public static io.grpc.binarylog.v1.MetadataEntry getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<MetadataEntry>
+ PARSER = new com.google.protobuf.AbstractParser<MetadataEntry>() {
+ public MetadataEntry parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new MetadataEntry(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<MetadataEntry> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<MetadataEntry> getParserForType() {
+ return PARSER;
+ }
+
+ public io.grpc.binarylog.v1.MetadataEntry getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/MetadataEntryOrBuilder.java b/services/src/generated/main/java/io/grpc/binarylog/v1/MetadataEntryOrBuilder.java
new file mode 100644
index 000000000..57b6b6f73
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/MetadataEntryOrBuilder.java
@@ -0,0 +1,24 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+public interface MetadataEntryOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:grpc.binarylog.v1.MetadataEntry)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <code>string key = 1;</code>
+ */
+ java.lang.String getKey();
+ /**
+ * <code>string key = 1;</code>
+ */
+ com.google.protobuf.ByteString
+ getKeyBytes();
+
+ /**
+ * <code>bytes value = 2;</code>
+ */
+ com.google.protobuf.ByteString getValue();
+}
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/MetadataOrBuilder.java b/services/src/generated/main/java/io/grpc/binarylog/v1/MetadataOrBuilder.java
new file mode 100644
index 000000000..cd13fb1a6
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/MetadataOrBuilder.java
@@ -0,0 +1,33 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+public interface MetadataOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:grpc.binarylog.v1.Metadata)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ java.util.List<io.grpc.binarylog.v1.MetadataEntry>
+ getEntryList();
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ io.grpc.binarylog.v1.MetadataEntry getEntry(int index);
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ int getEntryCount();
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ java.util.List<? extends io.grpc.binarylog.v1.MetadataEntryOrBuilder>
+ getEntryOrBuilderList();
+ /**
+ * <code>repeated .grpc.binarylog.v1.MetadataEntry entry = 1;</code>
+ */
+ io.grpc.binarylog.v1.MetadataEntryOrBuilder getEntryOrBuilder(
+ int index);
+}
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/ServerHeader.java b/services/src/generated/main/java/io/grpc/binarylog/v1/ServerHeader.java
new file mode 100644
index 000000000..be4477af9
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/ServerHeader.java
@@ -0,0 +1,618 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+/**
+ * Protobuf type {@code grpc.binarylog.v1.ServerHeader}
+ */
+public final class ServerHeader extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:grpc.binarylog.v1.ServerHeader)
+ ServerHeaderOrBuilder {
+private static final long serialVersionUID = 0L;
+ // Use ServerHeader.newBuilder() to construct.
+ private ServerHeader(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private ServerHeader() {
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private ServerHeader(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ io.grpc.binarylog.v1.Metadata.Builder subBuilder = null;
+ if (metadata_ != null) {
+ subBuilder = metadata_.toBuilder();
+ }
+ metadata_ = input.readMessage(io.grpc.binarylog.v1.Metadata.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(metadata_);
+ metadata_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ServerHeader_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ServerHeader_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.ServerHeader.class, io.grpc.binarylog.v1.ServerHeader.Builder.class);
+ }
+
+ public static final int METADATA_FIELD_NUMBER = 1;
+ private io.grpc.binarylog.v1.Metadata metadata_;
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public boolean hasMetadata() {
+ return metadata_ != null;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Metadata getMetadata() {
+ return metadata_ == null ? io.grpc.binarylog.v1.Metadata.getDefaultInstance() : metadata_;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataOrBuilder getMetadataOrBuilder() {
+ return getMetadata();
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (metadata_ != null) {
+ output.writeMessage(1, getMetadata());
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (metadata_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, getMetadata());
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof io.grpc.binarylog.v1.ServerHeader)) {
+ return super.equals(obj);
+ }
+ io.grpc.binarylog.v1.ServerHeader other = (io.grpc.binarylog.v1.ServerHeader) obj;
+
+ boolean result = true;
+ result = result && (hasMetadata() == other.hasMetadata());
+ if (hasMetadata()) {
+ result = result && getMetadata()
+ .equals(other.getMetadata());
+ }
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasMetadata()) {
+ hash = (37 * hash) + METADATA_FIELD_NUMBER;
+ hash = (53 * hash) + getMetadata().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.ServerHeader parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(io.grpc.binarylog.v1.ServerHeader prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code grpc.binarylog.v1.ServerHeader}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:grpc.binarylog.v1.ServerHeader)
+ io.grpc.binarylog.v1.ServerHeaderOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ServerHeader_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ServerHeader_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.ServerHeader.class, io.grpc.binarylog.v1.ServerHeader.Builder.class);
+ }
+
+ // Construct using io.grpc.binarylog.v1.ServerHeader.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ if (metadataBuilder_ == null) {
+ metadata_ = null;
+ } else {
+ metadata_ = null;
+ metadataBuilder_ = null;
+ }
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_ServerHeader_descriptor;
+ }
+
+ public io.grpc.binarylog.v1.ServerHeader getDefaultInstanceForType() {
+ return io.grpc.binarylog.v1.ServerHeader.getDefaultInstance();
+ }
+
+ public io.grpc.binarylog.v1.ServerHeader build() {
+ io.grpc.binarylog.v1.ServerHeader result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public io.grpc.binarylog.v1.ServerHeader buildPartial() {
+ io.grpc.binarylog.v1.ServerHeader result = new io.grpc.binarylog.v1.ServerHeader(this);
+ if (metadataBuilder_ == null) {
+ result.metadata_ = metadata_;
+ } else {
+ result.metadata_ = metadataBuilder_.build();
+ }
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof io.grpc.binarylog.v1.ServerHeader) {
+ return mergeFrom((io.grpc.binarylog.v1.ServerHeader)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(io.grpc.binarylog.v1.ServerHeader other) {
+ if (other == io.grpc.binarylog.v1.ServerHeader.getDefaultInstance()) return this;
+ if (other.hasMetadata()) {
+ mergeMetadata(other.getMetadata());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ io.grpc.binarylog.v1.ServerHeader parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (io.grpc.binarylog.v1.ServerHeader) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private io.grpc.binarylog.v1.Metadata metadata_ = null;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Metadata, io.grpc.binarylog.v1.Metadata.Builder, io.grpc.binarylog.v1.MetadataOrBuilder> metadataBuilder_;
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public boolean hasMetadata() {
+ return metadataBuilder_ != null || metadata_ != null;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Metadata getMetadata() {
+ if (metadataBuilder_ == null) {
+ return metadata_ == null ? io.grpc.binarylog.v1.Metadata.getDefaultInstance() : metadata_;
+ } else {
+ return metadataBuilder_.getMessage();
+ }
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder setMetadata(io.grpc.binarylog.v1.Metadata value) {
+ if (metadataBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ metadata_ = value;
+ onChanged();
+ } else {
+ metadataBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder setMetadata(
+ io.grpc.binarylog.v1.Metadata.Builder builderForValue) {
+ if (metadataBuilder_ == null) {
+ metadata_ = builderForValue.build();
+ onChanged();
+ } else {
+ metadataBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder mergeMetadata(io.grpc.binarylog.v1.Metadata value) {
+ if (metadataBuilder_ == null) {
+ if (metadata_ != null) {
+ metadata_ =
+ io.grpc.binarylog.v1.Metadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
+ } else {
+ metadata_ = value;
+ }
+ onChanged();
+ } else {
+ metadataBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder clearMetadata() {
+ if (metadataBuilder_ == null) {
+ metadata_ = null;
+ onChanged();
+ } else {
+ metadata_ = null;
+ metadataBuilder_ = null;
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Metadata.Builder getMetadataBuilder() {
+
+ onChanged();
+ return getMetadataFieldBuilder().getBuilder();
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataOrBuilder getMetadataOrBuilder() {
+ if (metadataBuilder_ != null) {
+ return metadataBuilder_.getMessageOrBuilder();
+ } else {
+ return metadata_ == null ?
+ io.grpc.binarylog.v1.Metadata.getDefaultInstance() : metadata_;
+ }
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Metadata, io.grpc.binarylog.v1.Metadata.Builder, io.grpc.binarylog.v1.MetadataOrBuilder>
+ getMetadataFieldBuilder() {
+ if (metadataBuilder_ == null) {
+ metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Metadata, io.grpc.binarylog.v1.Metadata.Builder, io.grpc.binarylog.v1.MetadataOrBuilder>(
+ getMetadata(),
+ getParentForChildren(),
+ isClean());
+ metadata_ = null;
+ }
+ return metadataBuilder_;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:grpc.binarylog.v1.ServerHeader)
+ }
+
+ // @@protoc_insertion_point(class_scope:grpc.binarylog.v1.ServerHeader)
+ private static final io.grpc.binarylog.v1.ServerHeader DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new io.grpc.binarylog.v1.ServerHeader();
+ }
+
+ public static io.grpc.binarylog.v1.ServerHeader getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<ServerHeader>
+ PARSER = new com.google.protobuf.AbstractParser<ServerHeader>() {
+ public ServerHeader parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new ServerHeader(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<ServerHeader> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<ServerHeader> getParserForType() {
+ return PARSER;
+ }
+
+ public io.grpc.binarylog.v1.ServerHeader getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/ServerHeaderOrBuilder.java b/services/src/generated/main/java/io/grpc/binarylog/v1/ServerHeaderOrBuilder.java
new file mode 100644
index 000000000..077748ba0
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/ServerHeaderOrBuilder.java
@@ -0,0 +1,34 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+public interface ServerHeaderOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:grpc.binarylog.v1.ServerHeader)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ boolean hasMetadata();
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ io.grpc.binarylog.v1.Metadata getMetadata();
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ io.grpc.binarylog.v1.MetadataOrBuilder getMetadataOrBuilder();
+}
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/Trailer.java b/services/src/generated/main/java/io/grpc/binarylog/v1/Trailer.java
new file mode 100644
index 000000000..270265f0f
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/Trailer.java
@@ -0,0 +1,935 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+/**
+ * Protobuf type {@code grpc.binarylog.v1.Trailer}
+ */
+public final class Trailer extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:grpc.binarylog.v1.Trailer)
+ TrailerOrBuilder {
+private static final long serialVersionUID = 0L;
+ // Use Trailer.newBuilder() to construct.
+ private Trailer(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private Trailer() {
+ statusCode_ = 0;
+ statusMessage_ = "";
+ statusDetails_ = com.google.protobuf.ByteString.EMPTY;
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Trailer(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ if (extensionRegistry == null) {
+ throw new java.lang.NullPointerException();
+ }
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ io.grpc.binarylog.v1.Metadata.Builder subBuilder = null;
+ if (metadata_ != null) {
+ subBuilder = metadata_.toBuilder();
+ }
+ metadata_ = input.readMessage(io.grpc.binarylog.v1.Metadata.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(metadata_);
+ metadata_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ case 16: {
+
+ statusCode_ = input.readUInt32();
+ break;
+ }
+ case 26: {
+ java.lang.String s = input.readStringRequireUtf8();
+
+ statusMessage_ = s;
+ break;
+ }
+ case 34: {
+
+ statusDetails_ = input.readBytes();
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Trailer_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Trailer_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.Trailer.class, io.grpc.binarylog.v1.Trailer.Builder.class);
+ }
+
+ public static final int METADATA_FIELD_NUMBER = 1;
+ private io.grpc.binarylog.v1.Metadata metadata_;
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public boolean hasMetadata() {
+ return metadata_ != null;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Metadata getMetadata() {
+ return metadata_ == null ? io.grpc.binarylog.v1.Metadata.getDefaultInstance() : metadata_;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataOrBuilder getMetadataOrBuilder() {
+ return getMetadata();
+ }
+
+ public static final int STATUS_CODE_FIELD_NUMBER = 2;
+ private int statusCode_;
+ /**
+ * <pre>
+ * The gRPC status code.
+ * </pre>
+ *
+ * <code>uint32 status_code = 2;</code>
+ */
+ public int getStatusCode() {
+ return statusCode_;
+ }
+
+ public static final int STATUS_MESSAGE_FIELD_NUMBER = 3;
+ private volatile java.lang.Object statusMessage_;
+ /**
+ * <pre>
+ * An original status message before any transport specific
+ * encoding.
+ * </pre>
+ *
+ * <code>string status_message = 3;</code>
+ */
+ public java.lang.String getStatusMessage() {
+ java.lang.Object ref = statusMessage_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ statusMessage_ = s;
+ return s;
+ }
+ }
+ /**
+ * <pre>
+ * An original status message before any transport specific
+ * encoding.
+ * </pre>
+ *
+ * <code>string status_message = 3;</code>
+ */
+ public com.google.protobuf.ByteString
+ getStatusMessageBytes() {
+ java.lang.Object ref = statusMessage_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ statusMessage_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int STATUS_DETAILS_FIELD_NUMBER = 4;
+ private com.google.protobuf.ByteString statusDetails_;
+ /**
+ * <pre>
+ * The value of the 'grpc-status-details-bin' metadata key. If
+ * present, this is always an encoded 'google.rpc.Status' message.
+ * </pre>
+ *
+ * <code>bytes status_details = 4;</code>
+ */
+ public com.google.protobuf.ByteString getStatusDetails() {
+ return statusDetails_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (metadata_ != null) {
+ output.writeMessage(1, getMetadata());
+ }
+ if (statusCode_ != 0) {
+ output.writeUInt32(2, statusCode_);
+ }
+ if (!getStatusMessageBytes().isEmpty()) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 3, statusMessage_);
+ }
+ if (!statusDetails_.isEmpty()) {
+ output.writeBytes(4, statusDetails_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (metadata_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(1, getMetadata());
+ }
+ if (statusCode_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeUInt32Size(2, statusCode_);
+ }
+ if (!getStatusMessageBytes().isEmpty()) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, statusMessage_);
+ }
+ if (!statusDetails_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(4, statusDetails_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof io.grpc.binarylog.v1.Trailer)) {
+ return super.equals(obj);
+ }
+ io.grpc.binarylog.v1.Trailer other = (io.grpc.binarylog.v1.Trailer) obj;
+
+ boolean result = true;
+ result = result && (hasMetadata() == other.hasMetadata());
+ if (hasMetadata()) {
+ result = result && getMetadata()
+ .equals(other.getMetadata());
+ }
+ result = result && (getStatusCode()
+ == other.getStatusCode());
+ result = result && getStatusMessage()
+ .equals(other.getStatusMessage());
+ result = result && getStatusDetails()
+ .equals(other.getStatusDetails());
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ if (hasMetadata()) {
+ hash = (37 * hash) + METADATA_FIELD_NUMBER;
+ hash = (53 * hash) + getMetadata().hashCode();
+ }
+ hash = (37 * hash) + STATUS_CODE_FIELD_NUMBER;
+ hash = (53 * hash) + getStatusCode();
+ hash = (37 * hash) + STATUS_MESSAGE_FIELD_NUMBER;
+ hash = (53 * hash) + getStatusMessage().hashCode();
+ hash = (37 * hash) + STATUS_DETAILS_FIELD_NUMBER;
+ hash = (53 * hash) + getStatusDetails().hashCode();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static io.grpc.binarylog.v1.Trailer parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static io.grpc.binarylog.v1.Trailer parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(io.grpc.binarylog.v1.Trailer prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code grpc.binarylog.v1.Trailer}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:grpc.binarylog.v1.Trailer)
+ io.grpc.binarylog.v1.TrailerOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Trailer_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Trailer_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ io.grpc.binarylog.v1.Trailer.class, io.grpc.binarylog.v1.Trailer.Builder.class);
+ }
+
+ // Construct using io.grpc.binarylog.v1.Trailer.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ if (metadataBuilder_ == null) {
+ metadata_ = null;
+ } else {
+ metadata_ = null;
+ metadataBuilder_ = null;
+ }
+ statusCode_ = 0;
+
+ statusMessage_ = "";
+
+ statusDetails_ = com.google.protobuf.ByteString.EMPTY;
+
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return io.grpc.binarylog.v1.BinaryLogProto.internal_static_grpc_binarylog_v1_Trailer_descriptor;
+ }
+
+ public io.grpc.binarylog.v1.Trailer getDefaultInstanceForType() {
+ return io.grpc.binarylog.v1.Trailer.getDefaultInstance();
+ }
+
+ public io.grpc.binarylog.v1.Trailer build() {
+ io.grpc.binarylog.v1.Trailer result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public io.grpc.binarylog.v1.Trailer buildPartial() {
+ io.grpc.binarylog.v1.Trailer result = new io.grpc.binarylog.v1.Trailer(this);
+ if (metadataBuilder_ == null) {
+ result.metadata_ = metadata_;
+ } else {
+ result.metadata_ = metadataBuilder_.build();
+ }
+ result.statusCode_ = statusCode_;
+ result.statusMessage_ = statusMessage_;
+ result.statusDetails_ = statusDetails_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof io.grpc.binarylog.v1.Trailer) {
+ return mergeFrom((io.grpc.binarylog.v1.Trailer)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(io.grpc.binarylog.v1.Trailer other) {
+ if (other == io.grpc.binarylog.v1.Trailer.getDefaultInstance()) return this;
+ if (other.hasMetadata()) {
+ mergeMetadata(other.getMetadata());
+ }
+ if (other.getStatusCode() != 0) {
+ setStatusCode(other.getStatusCode());
+ }
+ if (!other.getStatusMessage().isEmpty()) {
+ statusMessage_ = other.statusMessage_;
+ onChanged();
+ }
+ if (other.getStatusDetails() != com.google.protobuf.ByteString.EMPTY) {
+ setStatusDetails(other.getStatusDetails());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ io.grpc.binarylog.v1.Trailer parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (io.grpc.binarylog.v1.Trailer) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private io.grpc.binarylog.v1.Metadata metadata_ = null;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Metadata, io.grpc.binarylog.v1.Metadata.Builder, io.grpc.binarylog.v1.MetadataOrBuilder> metadataBuilder_;
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public boolean hasMetadata() {
+ return metadataBuilder_ != null || metadata_ != null;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Metadata getMetadata() {
+ if (metadataBuilder_ == null) {
+ return metadata_ == null ? io.grpc.binarylog.v1.Metadata.getDefaultInstance() : metadata_;
+ } else {
+ return metadataBuilder_.getMessage();
+ }
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder setMetadata(io.grpc.binarylog.v1.Metadata value) {
+ if (metadataBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ metadata_ = value;
+ onChanged();
+ } else {
+ metadataBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder setMetadata(
+ io.grpc.binarylog.v1.Metadata.Builder builderForValue) {
+ if (metadataBuilder_ == null) {
+ metadata_ = builderForValue.build();
+ onChanged();
+ } else {
+ metadataBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder mergeMetadata(io.grpc.binarylog.v1.Metadata value) {
+ if (metadataBuilder_ == null) {
+ if (metadata_ != null) {
+ metadata_ =
+ io.grpc.binarylog.v1.Metadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
+ } else {
+ metadata_ = value;
+ }
+ onChanged();
+ } else {
+ metadataBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public Builder clearMetadata() {
+ if (metadataBuilder_ == null) {
+ metadata_ = null;
+ onChanged();
+ } else {
+ metadata_ = null;
+ metadataBuilder_ = null;
+ }
+
+ return this;
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.Metadata.Builder getMetadataBuilder() {
+
+ onChanged();
+ return getMetadataFieldBuilder().getBuilder();
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ public io.grpc.binarylog.v1.MetadataOrBuilder getMetadataOrBuilder() {
+ if (metadataBuilder_ != null) {
+ return metadataBuilder_.getMessageOrBuilder();
+ } else {
+ return metadata_ == null ?
+ io.grpc.binarylog.v1.Metadata.getDefaultInstance() : metadata_;
+ }
+ }
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Metadata, io.grpc.binarylog.v1.Metadata.Builder, io.grpc.binarylog.v1.MetadataOrBuilder>
+ getMetadataFieldBuilder() {
+ if (metadataBuilder_ == null) {
+ metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ io.grpc.binarylog.v1.Metadata, io.grpc.binarylog.v1.Metadata.Builder, io.grpc.binarylog.v1.MetadataOrBuilder>(
+ getMetadata(),
+ getParentForChildren(),
+ isClean());
+ metadata_ = null;
+ }
+ return metadataBuilder_;
+ }
+
+ private int statusCode_ ;
+ /**
+ * <pre>
+ * The gRPC status code.
+ * </pre>
+ *
+ * <code>uint32 status_code = 2;</code>
+ */
+ public int getStatusCode() {
+ return statusCode_;
+ }
+ /**
+ * <pre>
+ * The gRPC status code.
+ * </pre>
+ *
+ * <code>uint32 status_code = 2;</code>
+ */
+ public Builder setStatusCode(int value) {
+
+ statusCode_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * The gRPC status code.
+ * </pre>
+ *
+ * <code>uint32 status_code = 2;</code>
+ */
+ public Builder clearStatusCode() {
+
+ statusCode_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private java.lang.Object statusMessage_ = "";
+ /**
+ * <pre>
+ * An original status message before any transport specific
+ * encoding.
+ * </pre>
+ *
+ * <code>string status_message = 3;</code>
+ */
+ public java.lang.String getStatusMessage() {
+ java.lang.Object ref = statusMessage_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ statusMessage_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <pre>
+ * An original status message before any transport specific
+ * encoding.
+ * </pre>
+ *
+ * <code>string status_message = 3;</code>
+ */
+ public com.google.protobuf.ByteString
+ getStatusMessageBytes() {
+ java.lang.Object ref = statusMessage_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ statusMessage_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <pre>
+ * An original status message before any transport specific
+ * encoding.
+ * </pre>
+ *
+ * <code>string status_message = 3;</code>
+ */
+ public Builder setStatusMessage(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ statusMessage_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * An original status message before any transport specific
+ * encoding.
+ * </pre>
+ *
+ * <code>string status_message = 3;</code>
+ */
+ public Builder clearStatusMessage() {
+
+ statusMessage_ = getDefaultInstance().getStatusMessage();
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * An original status message before any transport specific
+ * encoding.
+ * </pre>
+ *
+ * <code>string status_message = 3;</code>
+ */
+ public Builder setStatusMessageBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ statusMessage_ = value;
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.ByteString statusDetails_ = com.google.protobuf.ByteString.EMPTY;
+ /**
+ * <pre>
+ * The value of the 'grpc-status-details-bin' metadata key. If
+ * present, this is always an encoded 'google.rpc.Status' message.
+ * </pre>
+ *
+ * <code>bytes status_details = 4;</code>
+ */
+ public com.google.protobuf.ByteString getStatusDetails() {
+ return statusDetails_;
+ }
+ /**
+ * <pre>
+ * The value of the 'grpc-status-details-bin' metadata key. If
+ * present, this is always an encoded 'google.rpc.Status' message.
+ * </pre>
+ *
+ * <code>bytes status_details = 4;</code>
+ */
+ public Builder setStatusDetails(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ statusDetails_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <pre>
+ * The value of the 'grpc-status-details-bin' metadata key. If
+ * present, this is always an encoded 'google.rpc.Status' message.
+ * </pre>
+ *
+ * <code>bytes status_details = 4;</code>
+ */
+ public Builder clearStatusDetails() {
+
+ statusDetails_ = getDefaultInstance().getStatusDetails();
+ onChanged();
+ return this;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:grpc.binarylog.v1.Trailer)
+ }
+
+ // @@protoc_insertion_point(class_scope:grpc.binarylog.v1.Trailer)
+ private static final io.grpc.binarylog.v1.Trailer DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new io.grpc.binarylog.v1.Trailer();
+ }
+
+ public static io.grpc.binarylog.v1.Trailer getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<Trailer>
+ PARSER = new com.google.protobuf.AbstractParser<Trailer>() {
+ public Trailer parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Trailer(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<Trailer> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<Trailer> getParserForType() {
+ return PARSER;
+ }
+
+ public io.grpc.binarylog.v1.Trailer getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+}
+
diff --git a/services/src/generated/main/java/io/grpc/binarylog/v1/TrailerOrBuilder.java b/services/src/generated/main/java/io/grpc/binarylog/v1/TrailerOrBuilder.java
new file mode 100644
index 000000000..359e63d22
--- /dev/null
+++ b/services/src/generated/main/java/io/grpc/binarylog/v1/TrailerOrBuilder.java
@@ -0,0 +1,73 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: grpc/binlog/v1/binarylog.proto
+
+package io.grpc.binarylog.v1;
+
+public interface TrailerOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:grpc.binarylog.v1.Trailer)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ boolean hasMetadata();
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ io.grpc.binarylog.v1.Metadata getMetadata();
+ /**
+ * <pre>
+ * This contains only the metadata from the application.
+ * </pre>
+ *
+ * <code>.grpc.binarylog.v1.Metadata metadata = 1;</code>
+ */
+ io.grpc.binarylog.v1.MetadataOrBuilder getMetadataOrBuilder();
+
+ /**
+ * <pre>
+ * The gRPC status code.
+ * </pre>
+ *
+ * <code>uint32 status_code = 2;</code>
+ */
+ int getStatusCode();
+
+ /**
+ * <pre>
+ * An original status message before any transport specific
+ * encoding.
+ * </pre>
+ *
+ * <code>string status_message = 3;</code>
+ */
+ java.lang.String getStatusMessage();
+ /**
+ * <pre>
+ * An original status message before any transport specific
+ * encoding.
+ * </pre>
+ *
+ * <code>string status_message = 3;</code>
+ */
+ com.google.protobuf.ByteString
+ getStatusMessageBytes();
+
+ /**
+ * <pre>
+ * The value of the 'grpc-status-details-bin' metadata key. If
+ * present, this is always an encoded 'google.rpc.Status' message.
+ * </pre>
+ *
+ * <code>bytes status_details = 4;</code>
+ */
+ com.google.protobuf.ByteString getStatusDetails();
+}
diff --git a/services/src/main/java/io/grpc/services/BinaryLogProviderImpl.java b/services/src/main/java/io/grpc/services/BinaryLogProviderImpl.java
index 420281360..39fee44d3 100644
--- a/services/src/main/java/io/grpc/services/BinaryLogProviderImpl.java
+++ b/services/src/main/java/io/grpc/services/BinaryLogProviderImpl.java
@@ -28,9 +28,11 @@ import javax.annotation.Nullable;
* The default implementation of a {@link BinaryLogProvider}.
*/
class BinaryLogProviderImpl extends BinaryLogProvider {
+ // avoid using 0 because proto3 long fields default to 0 when unset
+ private static final AtomicLong counter = new AtomicLong(1);
+
private final BinlogHelper.Factory factory;
private final BinaryLogSink sink;
- private final AtomicLong counter = new AtomicLong();
public BinaryLogProviderImpl() throws IOException {
this(new TempFileSink(), System.getenv("GRPC_BINARY_LOG_CONFIG"));
@@ -65,7 +67,7 @@ class BinaryLogProviderImpl extends BinaryLogProvider {
if (helperForMethod == null) {
return null;
}
- return helperForMethod.getServerInterceptor(getServerCallId());
+ return helperForMethod.getServerInterceptor(counter.getAndIncrement());
}
@Nullable
@@ -76,19 +78,11 @@ class BinaryLogProviderImpl extends BinaryLogProvider {
if (helperForMethod == null) {
return null;
}
- return helperForMethod.getClientInterceptor(getClientCallId(callOptions));
+ return helperForMethod.getClientInterceptor(counter.getAndIncrement());
}
@Override
public void close() throws IOException {
sink.close();
}
-
- protected CallId getServerCallId() {
- return new CallId(0, counter.getAndIncrement());
- }
-
- protected CallId getClientCallId(CallOptions options) {
- return new CallId(0, counter.getAndIncrement());
- }
}
diff --git a/services/src/main/java/io/grpc/services/BinlogHelper.java b/services/src/main/java/io/grpc/services/BinlogHelper.java
index 7ae26d88f..cbeff7c2c 100644
--- a/services/src/main/java/io/grpc/services/BinlogHelper.java
+++ b/services/src/main/java/io/grpc/services/BinlogHelper.java
@@ -22,15 +22,16 @@ import static com.google.common.base.Preconditions.checkState;
import static io.grpc.services.BinaryLogProvider.BYTEARRAY_MARSHALLER;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Charsets;
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
import com.google.protobuf.ByteString;
import com.google.protobuf.Duration;
import com.google.protobuf.util.Durations;
+import com.google.protobuf.util.Timestamps;
import com.google.re2j.Matcher;
import com.google.re2j.Pattern;
import io.grpc.Attributes;
-import io.grpc.BinaryLog.CallId;
import io.grpc.CallOptions;
import io.grpc.Channel;
import io.grpc.ClientCall;
@@ -51,14 +52,12 @@ import io.grpc.ServerCall.Listener;
import io.grpc.ServerCallHandler;
import io.grpc.ServerInterceptor;
import io.grpc.Status;
-import io.grpc.binarylog.v1alpha.GrpcLogEntry;
-import io.grpc.binarylog.v1alpha.GrpcLogEntry.Type;
-import io.grpc.binarylog.v1alpha.Message;
-import io.grpc.binarylog.v1alpha.Metadata.Builder;
-import io.grpc.binarylog.v1alpha.Peer;
-import io.grpc.binarylog.v1alpha.Peer.PeerType;
-import io.grpc.binarylog.v1alpha.Uint128;
-import io.grpc.internal.GrpcUtil;
+import io.grpc.binarylog.v1.Address;
+import io.grpc.binarylog.v1.Address.Type;
+import io.grpc.binarylog.v1.GrpcLogEntry;
+import io.grpc.binarylog.v1.GrpcLogEntry.EventType;
+import io.grpc.binarylog.v1.Message;
+import io.grpc.binarylog.v1.Message.Builder;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
@@ -70,7 +69,7 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
@@ -82,8 +81,6 @@ import javax.annotation.concurrent.ThreadSafe;
@ThreadSafe
final class BinlogHelper {
private static final Logger logger = Logger.getLogger(BinlogHelper.class.getName());
- private static final boolean SERVER = true;
- private static final boolean CLIENT = false;
// Normally 'grpc-' metadata keys are set from within gRPC, and applications are not allowed
// to set them. This key is a special well known key that set from the application layer, but
// represents a com.google.rpc.Status and is given special first class treatment.
@@ -94,11 +91,6 @@ final class BinlogHelper {
Metadata.BINARY_BYTE_MARSHALLER);
@VisibleForTesting
- static final SocketAddress DUMMY_SOCKET = new DummySocketAddress();
- @VisibleForTesting
- static final boolean DUMMY_IS_COMPRESSED = false;
-
- @VisibleForTesting
final SinkWriter writer;
@VisibleForTesting
@@ -109,134 +101,191 @@ final class BinlogHelper {
// TODO(zpencer): move proto related static helpers into this class
static final class SinkWriterImpl extends SinkWriter {
private final BinaryLogSink sink;
+ private TimeProvider timeProvider;
private final int maxHeaderBytes;
private final int maxMessageBytes;
- SinkWriterImpl(BinaryLogSink sink, int maxHeaderBytes, int maxMessageBytes) {
+ private static final long NANOS_PER_SECOND = TimeUnit.SECONDS.toNanos(1);
+
+ SinkWriterImpl(
+ BinaryLogSink sink,
+ TimeProvider timeProvider,
+ int maxHeaderBytes,
+ int maxMessageBytes) {
this.sink = sink;
+ this.timeProvider = timeProvider;
this.maxHeaderBytes = maxHeaderBytes;
this.maxMessageBytes = maxMessageBytes;
}
+ GrpcLogEntry.Builder newTimestampedBuilder() {
+ long epochNanos = timeProvider.currentTimeNanos();
+ return GrpcLogEntry.newBuilder().setTimestamp(Timestamps.fromNanos(epochNanos));
+ }
+
@Override
- void logSendInitialMetadata(
- int seq,
- @Nullable String methodName, // null on server
- @Nullable Duration timeout, // null on server
+ void logClientHeader(
+ long seq,
+ String methodName,
+ // not all transports have the concept of authority
+ @Nullable String authority,
+ @Nullable Duration timeout,
Metadata metadata,
- boolean isServer,
- CallId callId) {
- Preconditions.checkArgument(methodName == null || !isServer);
- Preconditions.checkArgument(timeout == null || !isServer);
- // Java does not include the leading '/'. To be consistent with the rest of gRPC we must
- // include the '/' in the fully qualified name for binlogs.
- Preconditions.checkArgument(methodName == null || !methodName.startsWith("/"));
- GrpcLogEntry.Builder entryBuilder = GrpcLogEntry.newBuilder()
- .setSequenceIdWithinCall(seq)
- .setType(Type.SEND_INITIAL_METADATA)
- .setLogger(isServer ? GrpcLogEntry.Logger.SERVER : GrpcLogEntry.Logger.CLIENT)
- .setCallId(callIdToProto(callId));
- addMetadataToProto(entryBuilder, metadata, maxHeaderBytes);
- if (methodName != null) {
- entryBuilder.setMethodName("/" + methodName);
- }
+ GrpcLogEntry.Logger logger,
+ long callId,
+ // null on client side
+ @Nullable SocketAddress peerAddress) {
+ Preconditions.checkArgument(methodName != null, "methodName can not be null");
+ Preconditions.checkArgument(
+ !methodName.startsWith("/"),
+ "in grpc-java method names should not have a leading '/'. However this class will "
+ + "add one to be consistent with language agnostic conventions.");
+ Preconditions.checkArgument(
+ peerAddress == null || logger == GrpcLogEntry.Logger.LOGGER_SERVER,
+ "peerSocket can only be specified for server");
+
+ MaybeTruncated<io.grpc.binarylog.v1.Metadata.Builder> pair
+ = createMetadataProto(metadata, maxHeaderBytes);
+ io.grpc.binarylog.v1.ClientHeader.Builder clientHeaderBuilder
+ = io.grpc.binarylog.v1.ClientHeader.newBuilder()
+ .setMetadata(pair.proto)
+ .setMethodName("/" + methodName);
if (timeout != null) {
- entryBuilder.setTimeout(timeout);
+ clientHeaderBuilder.setTimeout(timeout);
+ }
+ if (authority != null) {
+ clientHeaderBuilder.setAuthority(authority);
+ }
+
+ GrpcLogEntry.Builder entryBuilder = newTimestampedBuilder()
+ .setSequenceIdWithinCall(seq)
+ .setType(EventType.EVENT_TYPE_CLIENT_HEADER)
+ .setClientHeader(clientHeaderBuilder)
+ .setPayloadTruncated(pair.truncated)
+ .setLogger(logger)
+ .setCallId(callId);
+ if (peerAddress != null) {
+ entryBuilder.setPeer(socketToProto(peerAddress));
}
sink.write(entryBuilder.build());
}
@Override
- void logRecvInitialMetadata(
- int seq,
- @Nullable String methodName, // null on client
- @Nullable Duration timeout, // null on client
+ void logServerHeader(
+ long seq,
Metadata metadata,
- boolean isServer,
- CallId callId,
- SocketAddress peerSocket) {
- Preconditions.checkArgument(methodName == null || isServer);
- Preconditions.checkArgument(timeout == null || isServer);
- // Java does not include the leading '/'. To be consistent with the rest of gRPC we must
- // include the '/' in the fully qualified name for binlogs.
- Preconditions.checkArgument(methodName == null || !methodName.startsWith("/"));
- GrpcLogEntry.Builder entryBuilder = GrpcLogEntry.newBuilder()
+ GrpcLogEntry.Logger logger,
+ long callId,
+ // null on server
+ @Nullable SocketAddress peerAddress) {
+ Preconditions.checkArgument(
+ peerAddress == null || logger == GrpcLogEntry.Logger.LOGGER_CLIENT,
+ "peerSocket can only be specified for client");
+ MaybeTruncated<io.grpc.binarylog.v1.Metadata.Builder> pair
+ = createMetadataProto(metadata, maxHeaderBytes);
+
+ GrpcLogEntry.Builder entryBuilder = newTimestampedBuilder()
.setSequenceIdWithinCall(seq)
- .setType(Type.RECV_INITIAL_METADATA)
- .setLogger(isServer ? GrpcLogEntry.Logger.SERVER : GrpcLogEntry.Logger.CLIENT)
- .setCallId(callIdToProto(callId))
- .setPeer(socketToProto(peerSocket));
- addMetadataToProto(entryBuilder, metadata, maxHeaderBytes);
- if (methodName != null) {
- entryBuilder.setMethodName("/" + methodName);
- }
- if (timeout != null) {
- entryBuilder.setTimeout(timeout);
+ .setType(EventType.EVENT_TYPE_SERVER_HEADER)
+ .setServerHeader(
+ io.grpc.binarylog.v1.ServerHeader.newBuilder()
+ .setMetadata(pair.proto))
+ .setPayloadTruncated(pair.truncated)
+ .setLogger(logger)
+ .setCallId(callId);
+ if (peerAddress != null) {
+ entryBuilder.setPeer(socketToProto(peerAddress));
}
sink.write(entryBuilder.build());
}
@Override
- void logTrailingMetadata(
- int seq, Status status, Metadata metadata, boolean isServer, CallId callId) {
- GrpcLogEntry.Builder entryBuilder = GrpcLogEntry.newBuilder()
- .setSequenceIdWithinCall(seq)
- .setType(isServer ? Type.SEND_TRAILING_METADATA : Type.RECV_TRAILING_METADATA)
- .setLogger(isServer ? GrpcLogEntry.Logger.SERVER : GrpcLogEntry.Logger.CLIENT)
- .setCallId(callIdToProto(callId))
- .setStatusCode(status.getCode().value());
+ void logTrailer(
+ long seq,
+ Status status,
+ Metadata metadata,
+ GrpcLogEntry.Logger logger,
+ long callId,
+ // null on server, can be non null on client if this is a trailer-only response
+ @Nullable SocketAddress peerAddress) {
+ Preconditions.checkArgument(
+ peerAddress == null || logger == GrpcLogEntry.Logger.LOGGER_CLIENT,
+ "peerSocket can only be specified for client");
+ MaybeTruncated<io.grpc.binarylog.v1.Metadata.Builder> pair
+ = createMetadataProto(metadata, maxHeaderBytes);
+
+ io.grpc.binarylog.v1.Trailer.Builder trailerBuilder
+ = io.grpc.binarylog.v1.Trailer.newBuilder()
+ .setStatusCode(status.getCode().value())
+ .setMetadata(pair.proto);
String statusDescription = status.getDescription();
if (statusDescription != null) {
- entryBuilder.setStatusMessage(statusDescription);
+ trailerBuilder.setStatusMessage(statusDescription);
}
byte[] statusDetailBytes = metadata.get(STATUS_DETAILS_KEY);
if (statusDetailBytes != null) {
- entryBuilder.setStatusDetails(ByteString.copyFrom(statusDetailBytes));
+ trailerBuilder.setStatusDetails(ByteString.copyFrom(statusDetailBytes));
}
- addMetadataToProto(entryBuilder, metadata, maxHeaderBytes);
+ GrpcLogEntry.Builder entryBuilder = newTimestampedBuilder()
+ .setSequenceIdWithinCall(seq)
+ .setType(EventType.EVENT_TYPE_SERVER_TRAILER)
+ .setTrailer(trailerBuilder)
+ .setPayloadTruncated(pair.truncated)
+ .setLogger(logger)
+ .setCallId(callId);
+ if (peerAddress != null) {
+ entryBuilder.setPeer(socketToProto(peerAddress));
+ }
sink.write(entryBuilder.build());
}
@Override
- <T> void logOutboundMessage(
- int seq,
+ <T> void logRpcMessage(
+ long seq,
+ EventType eventType,
Marshaller<T> marshaller,
T message,
- boolean compressed,
- boolean isServer,
- CallId callId) {
+ GrpcLogEntry.Logger logger,
+ long callId) {
+ Preconditions.checkArgument(
+ eventType == EventType.EVENT_TYPE_CLIENT_MESSAGE
+ || eventType == EventType.EVENT_TYPE_SERVER_MESSAGE,
+ "event type must correspond to client message or server message");
if (marshaller != BYTEARRAY_MARSHALLER) {
throw new IllegalStateException("Expected the BinaryLog's ByteArrayMarshaller");
}
- GrpcLogEntry.Builder entryBuilder = GrpcLogEntry.newBuilder()
+ MaybeTruncated<Builder> pair = createMessageProto((byte[]) message, maxMessageBytes);
+ GrpcLogEntry.Builder entryBuilder = newTimestampedBuilder()
.setSequenceIdWithinCall(seq)
- .setType(Type.SEND_MESSAGE)
- .setLogger(isServer ? GrpcLogEntry.Logger.SERVER : GrpcLogEntry.Logger.CLIENT)
- .setCallId(callIdToProto(callId));
- messageToProto(entryBuilder, (byte[]) message, compressed, maxMessageBytes);
+ .setType(eventType)
+ .setMessage(pair.proto)
+ .setPayloadTruncated(pair.truncated)
+ .setLogger(logger)
+ .setCallId(callId);
sink.write(entryBuilder.build());
}
@Override
- <T> void logInboundMessage(
- int seq,
- Marshaller<T> marshaller,
- T message,
- boolean compressed,
- boolean isServer,
- CallId callId) {
- if (marshaller != BYTEARRAY_MARSHALLER) {
- throw new IllegalStateException("Expected the BinaryLog's ByteArrayMarshaller");
- }
- GrpcLogEntry.Builder entryBuilder = GrpcLogEntry.newBuilder()
- .setSequenceIdWithinCall(seq)
- .setType(Type.RECV_MESSAGE)
- .setLogger(isServer ? GrpcLogEntry.Logger.SERVER : GrpcLogEntry.Logger.CLIENT)
- .setCallId(callIdToProto(callId));
+ void logHalfClose(long seq, GrpcLogEntry.Logger logger, long callId) {
+ sink.write(
+ newTimestampedBuilder()
+ .setSequenceIdWithinCall(seq)
+ .setType(EventType.EVENT_TYPE_CLIENT_HALF_CLOSE)
+ .setLogger(logger)
+ .setCallId(callId)
+ .build());
+ }
- messageToProto(entryBuilder, (byte[]) message, compressed, maxMessageBytes);
- sink.write(entryBuilder.build());
+ @Override
+ void logCancel(long seq, GrpcLogEntry.Logger logger, long callId) {
+ sink.write(
+ newTimestampedBuilder()
+ .setSequenceIdWithinCall(seq)
+ .setType(EventType.EVENT_TYPE_CANCEL)
+ .setLogger(logger)
+ .setCallId(callId)
+ .build());
}
@Override
@@ -252,56 +301,64 @@ final class BinlogHelper {
abstract static class SinkWriter {
/**
- * Logs the sending of initial metadata. This method logs the appropriate number of bytes
+ * Logs the client header. This method logs the appropriate number of bytes
* as determined by the binary logging configuration.
*/
- abstract void logSendInitialMetadata(
- int seq,
+ abstract void logClientHeader(
+ long seq,
String methodName,
- Duration timeout,
+ // not all transports have the concept of authority
+ @Nullable String authority,
+ @Nullable Duration timeout,
Metadata metadata,
- boolean isServer,
- CallId callId);
+ GrpcLogEntry.Logger logger,
+ long callId,
+ // null on client side
+ @Nullable SocketAddress peerAddress);
/**
- * Logs the receiving of initial metadata. This method logs the appropriate number of bytes
+ * Logs the server header. This method logs the appropriate number of bytes
* as determined by the binary logging configuration.
*/
- abstract void logRecvInitialMetadata(
- int seq,
- String methodName,
- Duration timeout,
+ abstract void logServerHeader(
+ long seq,
Metadata metadata,
- boolean isServer,
- CallId callId,
- SocketAddress peerSocket);
+ GrpcLogEntry.Logger logger,
+ long callId,
+ // null on server
+ @Nullable SocketAddress peerAddress);
/**
- * Logs the trailing metadata. This method logs the appropriate number of bytes
+ * Logs the server trailer. This method logs the appropriate number of bytes
* as determined by the binary logging configuration.
*/
- abstract void logTrailingMetadata(
- int seq, Status status, Metadata metadata, boolean isServer, CallId callId);
+ abstract void logTrailer(
+ long seq,
+ Status status,
+ Metadata metadata,
+ GrpcLogEntry.Logger logger,
+ long callId,
+ // null on server, can be non null on client if this is a trailer-only response
+ @Nullable SocketAddress peerAddress);
/**
- * Logs the outbound message. This method logs the appropriate number of bytes from
- * {@code message}, and returns a duplicate of the message.
- * The number of bytes logged is determined by the binary logging configuration.
- * This method takes ownership of {@code message}.
+ * Logs the message message. The number of bytes logged is determined by the binary
+ * logging configuration.
*/
- abstract <T> void logOutboundMessage(
- int seq, Marshaller<T> marshaller, T message, boolean compressed, boolean isServer,
- CallId callId);
+ abstract <T> void logRpcMessage(
+ long seq,
+ EventType eventType,
+ Marshaller<T> marshaller,
+ T message,
+ GrpcLogEntry.Logger logger,
+ long callId);
+
+ abstract void logHalfClose(long seq, GrpcLogEntry.Logger logger, long callId);
/**
- * Logs the inbound message. This method logs the appropriate number of bytes from
- * {@code message}, and returns a duplicate of the message.
- * The number of bytes logged is determined by the binary logging configuration.
- * This method takes ownership of {@code message}.
+ * Logs the cancellation.
*/
- abstract <T> void logInboundMessage(
- int seq, Marshaller<T> marshaller, T message, boolean compressed, boolean isServer,
- CallId callId);
+ abstract void logCancel(long seq, GrpcLogEntry.Logger logger, long callId);
/**
* Returns the number bytes of the header this writer will log, according to configuration.
@@ -315,11 +372,7 @@ final class BinlogHelper {
}
static SocketAddress getPeerSocket(Attributes streamAttributes) {
- SocketAddress peer = streamAttributes.get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR);
- if (peer == null) {
- return DUMMY_SOCKET;
- }
- return peer;
+ return streamAttributes.get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR);
}
private static Deadline min(@Nullable Deadline deadline0, @Nullable Deadline deadline1) {
@@ -332,56 +385,83 @@ final class BinlogHelper {
return deadline0.minimum(deadline1);
}
- public ClientInterceptor getClientInterceptor(final CallId callId) {
+ interface TimeProvider {
+ /** Returns the current nano time. */
+ long currentTimeNanos();
+
+ TimeProvider SYSTEM_TIME_PROVIDER = new TimeProvider() {
+ @Override
+ public long currentTimeNanos() {
+ return TimeUnit.MILLISECONDS.toNanos(System.currentTimeMillis());
+ }
+ };
+ }
+
+
+ public ClientInterceptor getClientInterceptor(final long callId) {
return new ClientInterceptor() {
+ boolean trailersOnlyResponse = true;
@Override
public <ReqT, RespT> ClientCall<ReqT, RespT> interceptCall(
final MethodDescriptor<ReqT, RespT> method, CallOptions callOptions, Channel next) {
- final AtomicInteger seq = new AtomicInteger(1);
+ final AtomicLong seq = new AtomicLong(1);
final String methodName = method.getFullMethodName();
+ final String authority = next.authority();
// The timeout should reflect the time remaining when the call is started, so do not
// compute remaining time here.
final Deadline deadline = min(callOptions.getDeadline(), Context.current().getDeadline());
return new SimpleForwardingClientCall<ReqT, RespT>(next.newCall(method, callOptions)) {
@Override
- public void start(Listener<RespT> responseListener, Metadata headers) {
+ public void start(final Listener<RespT> responseListener, Metadata headers) {
final Duration timeout = deadline == null ? null
: Durations.fromNanos(deadline.timeRemaining(TimeUnit.NANOSECONDS));
- writer.logSendInitialMetadata(
- seq.getAndIncrement(), methodName, timeout, headers, CLIENT, callId);
+ writer.logClientHeader(
+ seq.getAndIncrement(),
+ methodName,
+ authority,
+ timeout,
+ headers,
+ GrpcLogEntry.Logger.LOGGER_CLIENT,
+ callId,
+ /*peerAddress=*/ null);
ClientCall.Listener<RespT> wListener =
new SimpleForwardingClientCallListener<RespT>(responseListener) {
@Override
public void onMessage(RespT message) {
- writer.logInboundMessage(
+ writer.logRpcMessage(
seq.getAndIncrement(),
+ EventType.EVENT_TYPE_SERVER_MESSAGE,
method.getResponseMarshaller(),
message,
- DUMMY_IS_COMPRESSED,
- CLIENT,
+ GrpcLogEntry.Logger.LOGGER_CLIENT,
callId);
super.onMessage(message);
}
@Override
public void onHeaders(Metadata headers) {
- SocketAddress peer = getPeerSocket(getAttributes());
- writer.logRecvInitialMetadata(
+ trailersOnlyResponse = false;
+ writer.logServerHeader(
seq.getAndIncrement(),
- /*methodName=*/ null,
- /*timeout=*/ null,
headers,
- CLIENT,
+ GrpcLogEntry.Logger.LOGGER_CLIENT,
callId,
- peer);
+ getPeerSocket(getAttributes()));
super.onHeaders(headers);
}
@Override
public void onClose(Status status, Metadata trailers) {
- writer.logTrailingMetadata(
- seq.getAndIncrement(), status, trailers, CLIENT, callId);
+ SocketAddress peer = trailersOnlyResponse
+ ? getPeerSocket(getAttributes()) : null;
+ writer.logTrailer(
+ seq.getAndIncrement(),
+ status,
+ trailers,
+ GrpcLogEntry.Logger.LOGGER_CLIENT,
+ callId,
+ peer);
super.onClose(status, trailers);
}
};
@@ -390,64 +470,94 @@ final class BinlogHelper {
@Override
public void sendMessage(ReqT message) {
- writer.logOutboundMessage(
+ writer.logRpcMessage(
seq.getAndIncrement(),
+ EventType.EVENT_TYPE_CLIENT_MESSAGE,
method.getRequestMarshaller(),
message,
- DUMMY_IS_COMPRESSED,
- CLIENT,
+ GrpcLogEntry.Logger.LOGGER_CLIENT,
callId);
super.sendMessage(message);
}
+
+ @Override
+ public void halfClose() {
+ writer.logHalfClose(
+ seq.getAndIncrement(),
+ GrpcLogEntry.Logger.LOGGER_CLIENT,
+ callId);
+ }
+
+ @Override
+ public void cancel(String message, Throwable cause) {
+ writer.logCancel(
+ seq.getAndIncrement(),
+ GrpcLogEntry.Logger.LOGGER_CLIENT,
+ callId);
+ super.cancel(message, cause);
+ }
};
}
};
}
- public ServerInterceptor getServerInterceptor(final CallId callId) {
+ public ServerInterceptor getServerInterceptor(final long callId) {
return new ServerInterceptor() {
@Override
public <ReqT, RespT> Listener<ReqT> interceptCall(
final ServerCall<ReqT, RespT> call,
Metadata headers,
ServerCallHandler<ReqT, RespT> next) {
- final AtomicInteger seq = new AtomicInteger(1);
+ final AtomicLong seq = new AtomicLong(1);
SocketAddress peer = getPeerSocket(call.getAttributes());
String methodName = call.getMethodDescriptor().getFullMethodName();
- Long timeoutNanos = headers.get(GrpcUtil.TIMEOUT_KEY);
- final Duration timeout =
- timeoutNanos == null ? null : Durations.fromNanos(timeoutNanos);
-
- writer.logRecvInitialMetadata(
- seq.getAndIncrement(), methodName, timeout, headers, SERVER, callId, peer);
+ String authority = call.getAuthority();
+ Deadline deadline = Context.current().getDeadline();
+ final Duration timeout = deadline == null ? null
+ : Durations.fromNanos(deadline.timeRemaining(TimeUnit.NANOSECONDS));
+
+ writer.logClientHeader(
+ seq.getAndIncrement(),
+ methodName,
+ authority,
+ timeout,
+ headers,
+ GrpcLogEntry.Logger.LOGGER_SERVER,
+ callId,
+ peer);
ServerCall<ReqT, RespT> wCall = new SimpleForwardingServerCall<ReqT, RespT>(call) {
@Override
public void sendMessage(RespT message) {
- writer.logOutboundMessage(
+ writer.logRpcMessage(
seq.getAndIncrement(),
+ EventType.EVENT_TYPE_SERVER_MESSAGE,
call.getMethodDescriptor().getResponseMarshaller(),
message,
- DUMMY_IS_COMPRESSED,
- SERVER,
+ GrpcLogEntry.Logger.LOGGER_SERVER,
callId);
super.sendMessage(message);
}
@Override
public void sendHeaders(Metadata headers) {
- writer.logSendInitialMetadata(
+ writer.logServerHeader(
seq.getAndIncrement(),
- /*methodName=*/ null,
- /*timeout=*/ null,
headers,
- SERVER,
- callId);
+ GrpcLogEntry.Logger.LOGGER_SERVER,
+ callId,
+ /*peerAddress=*/ null);
super.sendHeaders(headers);
}
@Override
public void close(Status status, Metadata trailers) {
- writer.logTrailingMetadata(seq.getAndIncrement(), status, trailers, SERVER, callId);
+ writer.logTrailer(
+ seq.getAndIncrement(),
+ status,
+ trailers,
+ GrpcLogEntry.Logger.LOGGER_SERVER,
+ callId,
+ /*peerAddress=*/ null);
super.close(status, trailers);
}
};
@@ -455,15 +565,32 @@ final class BinlogHelper {
return new SimpleForwardingServerCallListener<ReqT>(next.startCall(wCall, headers)) {
@Override
public void onMessage(ReqT message) {
- writer.logInboundMessage(
+ writer.logRpcMessage(
seq.getAndIncrement(),
+ EventType.EVENT_TYPE_CLIENT_MESSAGE,
call.getMethodDescriptor().getRequestMarshaller(),
message,
- DUMMY_IS_COMPRESSED,
- SERVER,
+ GrpcLogEntry.Logger.LOGGER_SERVER,
callId);
super.onMessage(message);
}
+
+ @Override
+ public void onHalfClose() {
+ writer.logHalfClose(
+ seq.getAndIncrement(),
+ GrpcLogEntry.Logger.LOGGER_SERVER,
+ callId);
+ super.onHalfClose();
+ }
+
+ @Override
+ public void onCancel() {
+ writer.logCancel(
+ seq.getAndIncrement(),
+ GrpcLogEntry.Logger.LOGGER_SERVER,
+ callId);
+ }
};
}
};
@@ -599,7 +726,8 @@ final class BinlogHelper {
static BinlogHelper createBinaryLog(BinaryLogSink sink, @Nullable String logConfig) {
if (logConfig == null) {
return new BinlogHelper(
- new SinkWriterImpl(sink, Integer.MAX_VALUE, Integer.MAX_VALUE));
+ new SinkWriterImpl(
+ sink, TimeProvider.SYSTEM_TIME_PROVIDER, Integer.MAX_VALUE, Integer.MAX_VALUE));
}
try {
Matcher headerMatcher;
@@ -625,7 +753,9 @@ final class BinlogHelper {
} else {
throw new IllegalArgumentException("Illegal log config pattern");
}
- return new BinlogHelper(new SinkWriterImpl(sink, maxHeaderBytes, maxMsgBytes));
+ return new BinlogHelper(
+ new SinkWriterImpl(
+ sink, TimeProvider.SYSTEM_TIME_PROVIDER, maxHeaderBytes, maxMsgBytes));
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Illegal log config pattern");
}
@@ -639,30 +769,18 @@ final class BinlogHelper {
}
}
- /**
- * Returns a {@link Uint128} from a CallId.
- */
- static Uint128 callIdToProto(CallId callId) {
- checkNotNull(callId, "callId");
- return Uint128
- .newBuilder()
- .setHigh(callId.hi)
- .setLow(callId.lo)
- .build();
- }
-
@VisibleForTesting
- static Peer socketToProto(SocketAddress address) {
+ static Address socketToProto(SocketAddress address) {
checkNotNull(address, "address");
- Peer.Builder builder = Peer.newBuilder();
+ Address.Builder builder = Address.newBuilder();
if (address instanceof InetSocketAddress) {
InetAddress inetAddress = ((InetSocketAddress) address).getAddress();
if (inetAddress instanceof Inet4Address) {
- builder.setPeerType(PeerType.PEER_IPV4)
+ builder.setType(Type.TYPE_IPV4)
.setAddress(InetAddressUtil.toAddrString(inetAddress));
} else if (inetAddress instanceof Inet6Address) {
- builder.setPeerType(PeerType.PEER_IPV6)
+ builder.setType(Type.TYPE_IPV6)
.setAddress(InetAddressUtil.toAddrString(inetAddress));
} else {
logger.log(Level.SEVERE, "unknown type of InetSocketAddress: {}", address);
@@ -671,69 +789,79 @@ final class BinlogHelper {
builder.setIpPort(((InetSocketAddress) address).getPort());
} else if (address.getClass().getName().equals("io.netty.channel.unix.DomainSocketAddress")) {
// To avoid a compile time dependency on grpc-netty, we check against the runtime class name.
- builder.setPeerType(PeerType.PEER_UNIX)
+ builder.setType(Type.TYPE_UNIX)
.setAddress(address.toString());
} else {
- builder.setPeerType(PeerType.UNKNOWN_PEERTYPE).setAddress(address.toString());
+ builder.setType(Type.TYPE_UNKNOWN).setAddress(address.toString());
}
return builder.build();
}
+ private static final Set<String> NEVER_INCLUDED_METADATA = new HashSet<String>(
+ Collections.singletonList(
+ // grpc-status-details-bin is already logged in a field of the binlog proto
+ STATUS_DETAILS_KEY.name()));
+ private static final Set<String> ALWAYS_INCLUDED_METADATA = new HashSet<String>(
+ Collections.singletonList(
+ "grpc-trace-bin"));
+
+ static final class MaybeTruncated<T> {
+ T proto;
+ boolean truncated;
+
+ private MaybeTruncated(T proto, boolean truncated) {
+ this.proto = proto;
+ this.truncated = truncated;
+ }
+ }
+
@VisibleForTesting
- static void addMetadataToProto(
- GrpcLogEntry.Builder entryBuilder, Metadata metadata, int maxHeaderBytes) {
- checkNotNull(entryBuilder, "entryBuilder");
+ static MaybeTruncated<io.grpc.binarylog.v1.Metadata.Builder> createMetadataProto(
+ Metadata metadata, int maxHeaderBytes) {
checkNotNull(metadata, "metadata");
checkArgument(maxHeaderBytes >= 0, "maxHeaderBytes must be non negative");
- Builder metaBuilder = io.grpc.binarylog.v1alpha.Metadata.newBuilder();
+ io.grpc.binarylog.v1.Metadata.Builder metaBuilder = io.grpc.binarylog.v1.Metadata.newBuilder();
// This code is tightly coupled with Metadata's implementation
- byte[][] serialized = null;
- if (maxHeaderBytes > 0 && (serialized = InternalMetadata.serialize(metadata)) != null) {
- int written = 0;
- for (int i = 0; i < serialized.length && written < maxHeaderBytes; i += 2) {
- byte[] key = serialized[i];
+ byte[][] serialized = InternalMetadata.serialize(metadata);
+ boolean truncated = false;
+ if (serialized != null) {
+ int curBytes = 0;
+ for (int i = 0; i < serialized.length; i += 2) {
+ String key = new String(serialized[i], Charsets.UTF_8);
byte[] value = serialized[i + 1];
- if (written + key.length + value.length <= maxHeaderBytes) {
- metaBuilder.addEntryBuilder()
- .setKey(ByteString.copyFrom(key))
- .setValue(ByteString.copyFrom(value));
- written += key.length;
- written += value.length;
+ if (NEVER_INCLUDED_METADATA.contains(key)) {
+ continue;
+ }
+ boolean forceInclude = ALWAYS_INCLUDED_METADATA.contains(key);
+ int bytesAfterAdd = curBytes + key.length() + value.length;
+ if (!forceInclude && bytesAfterAdd > maxHeaderBytes) {
+ truncated = true;
+ continue;
+ }
+ metaBuilder.addEntryBuilder()
+ .setKey(key)
+ .setValue(ByteString.copyFrom(value));
+ if (!forceInclude) {
+ // force included keys do not count towards the size limit
+ curBytes = bytesAfterAdd;
}
}
}
- // This check must be updated when we add filtering
- entryBuilder.setTruncated(maxHeaderBytes == 0
- || (serialized != null && metaBuilder.getEntryCount() < (serialized.length / 2)));
- entryBuilder.setMetadata(metaBuilder);
+ return new MaybeTruncated<io.grpc.binarylog.v1.Metadata.Builder>(metaBuilder, truncated);
}
@VisibleForTesting
- static void messageToProto(
- GrpcLogEntry.Builder entryBuilder, byte[] message, boolean compressed, int maxMessageBytes) {
+ static MaybeTruncated<Message.Builder> createMessageProto(
+ byte[] message, int maxMessageBytes) {
checkNotNull(message, "message");
checkArgument(maxMessageBytes >= 0, "maxMessageBytes must be non negative");
Message.Builder msgBuilder = Message
.newBuilder()
- .setFlags(flagsForMessage(compressed))
.setLength(message.length);
if (maxMessageBytes > 0) {
int desiredBytes = Math.min(maxMessageBytes, message.length);
msgBuilder.setData(ByteString.copyFrom(message, 0, desiredBytes));
}
- entryBuilder.setMessage(msgBuilder);
- entryBuilder.setTruncated(maxMessageBytes < message.length);
- }
-
- /**
- * Returns a flag based on the arguments.
- */
- @VisibleForTesting
- static int flagsForMessage(boolean compressed) {
- return compressed ? 1 : 0;
- }
-
- private static class DummySocketAddress extends SocketAddress {
- private static final long serialVersionUID = 0;
+ return new MaybeTruncated<Message.Builder>(msgBuilder, maxMessageBytes < message.length);
}
}
diff --git a/services/src/main/proto/grpc/binlog/v1/binarylog.proto b/services/src/main/proto/grpc/binlog/v1/binarylog.proto
new file mode 100644
index 000000000..9ed1733e2
--- /dev/null
+++ b/services/src/main/proto/grpc/binlog/v1/binarylog.proto
@@ -0,0 +1,209 @@
+// Copyright 2018 The gRPC Authors
+// All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The canonical version of this proto can be found at
+// https://github.com/grpc/grpc-proto/blob/master/grpc/binlog/v1/binarylog.proto
+
+syntax = "proto3";
+
+package grpc.binarylog.v1;
+
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+
+option go_package = "google.golang.org/grpc/binarylog/grpc_binarylog_v1";
+option java_multiple_files = true;
+option java_package = "io.grpc.binarylog.v1";
+option java_outer_classname = "BinaryLogProto";
+
+// Log entry we store in binary logs
+message GrpcLogEntry {
+ // Enumerates the type of event
+ // Note the terminology is different from the RPC semantics
+ // definition, but the same meaning is expressed here.
+ enum EventType {
+ EVENT_TYPE_UNKNOWN = 0;
+ // Header sent from client to server
+ EVENT_TYPE_CLIENT_HEADER = 1;
+ // Header sent from server to client
+ EVENT_TYPE_SERVER_HEADER = 2;
+ // Message sent from client to server
+ EVENT_TYPE_CLIENT_MESSAGE = 3;
+ // Message sent from server to client
+ EVENT_TYPE_SERVER_MESSAGE = 4;
+ // A signal that client is done sending
+ EVENT_TYPE_CLIENT_HALF_CLOSE = 5;
+ // Trailer indicates the end of the RPC.
+ // On client side, this event means a trailer was either received
+ // from the network or the gRPC library locally generated a status
+ // to inform the application about a failure.
+ // On server side, this event means the server application requested
+ // to send a trailer. Note: EVENT_TYPE_CANCEL may still arrive after
+ // this due to races on server side.
+ EVENT_TYPE_SERVER_TRAILER = 6;
+ // A signal that the RPC is cancelled. On client side, this
+ // indicates the client application requests a cancellation.
+ // On server side, this indicates that cancellation was detected.
+ // Note: This marks the end of the RPC. Events may arrive after
+ // this due to races. For example, on client side a trailer
+ // may arrive even though the application requested to cancel the RPC.
+ EVENT_TYPE_CANCEL = 7;
+ }
+
+ // Enumerates the entity that generates the log entry
+ enum Logger {
+ LOGGER_UNKNOWN = 0;
+ LOGGER_CLIENT = 1;
+ LOGGER_SERVER = 2;
+ }
+
+ // The timestamp of the binary log message
+ google.protobuf.Timestamp timestamp = 1;
+
+ // Uniquely identifies a call. The value must not be 0 in order to disambiguate
+ // from an unset value.
+ // Each call may have several log entries, they will all have the same call_id.
+ // Nothing is guaranteed about their value other than they are unique across
+ // different RPCs in the same gRPC process.
+ uint64 call_id = 2;
+
+ // The entry sequence id for this call. The first GrpcLogEntry has a
+ // value of 1, to disambiguate from an unset value. The purpose of
+ // this field is to detect missing entries in environments where
+ // durability or ordering is not guaranteed.
+ uint64 sequence_id_within_call = 3;
+
+ EventType type = 4;
+ Logger logger = 5; // One of the above Logger enum
+
+ // The logger uses one of the following fields to record the payload,
+ // according to the type of the log entry.
+ oneof payload {
+ ClientHeader client_header = 6;
+ ServerHeader server_header = 7;
+ // Used by EVENT_TYPE_CLIENT_MESSAGE, EVENT_TYPE_SERVER_MESSAGE
+ Message message = 8;
+ Trailer trailer = 9;
+ }
+
+ // true if payload does not represent the full message or metadata.
+ bool payload_truncated = 10;
+
+ // Peer address information, will only be recorded on the first
+ // incoming event. On client side, peer is logged on
+ // EVENT_TYPE_SERVER_HEADER normally or EVENT_TYPE_SERVER_TRAILER in
+ // the case of trailers-only. On server side, peer is always
+ // logged on EVENT_TYPE_CLIENT_HEADER.
+ Address peer = 11;
+};
+
+message ClientHeader {
+ // This contains only the metadata from the application.
+ Metadata metadata = 1;
+
+ // The name of the RPC method, which looks something like:
+ // /<service>/<method>
+ // Note the leading "/" character.
+ string method_name = 2;
+
+ // A single process may be used to run multiple virtual
+ // servers with different identities.
+ // The authority is the name of such a server identitiy.
+ // It is typically a portion of the URI in the form of
+ // <host> or <host>:<port> .
+ string authority = 3;
+
+ // the RPC timeout
+ google.protobuf.Duration timeout = 4;
+}
+
+message ServerHeader {
+ // This contains only the metadata from the application.
+ Metadata metadata = 1;
+}
+
+message Trailer {
+ // This contains only the metadata from the application.
+ Metadata metadata = 1;
+
+ // The gRPC status code.
+ uint32 status_code = 2;
+
+ // An original status message before any transport specific
+ // encoding.
+ string status_message = 3;
+
+ // The value of the 'grpc-status-details-bin' metadata key. If
+ // present, this is always an encoded 'google.rpc.Status' message.
+ bytes status_details = 4;
+}
+
+// Message payload, used by CLIENT_MESSAGE and SERVER_MESSAGE
+message Message {
+ // Length of the message. It may not be the same as the length of the
+ // data field, as the logging payload can be truncated or omitted.
+ uint32 length = 1;
+ // May be truncated or omitted.
+ bytes data = 2;
+}
+
+// A list of metadata pairs, used in the payload of client header,
+// server header, and server trailer.
+// Implementations may omit some entries to honor the header limits
+// of GRPC_BINARY_LOG_CONFIG.
+//
+// Header keys added by gRPC are omitted. To be more specific,
+// implementations will not log the following entries, and this is
+// not to be treated as a truncation:
+// - entries handled by grpc that are not user visible, such as those
+// that begin with 'grpc-' (with exception of grpc-trace-bin)
+// or keys like 'lb-token'
+// - transport specific entries, including but not limited to:
+// ':path', ':authority', 'content-encoding', 'user-agent', 'te', etc
+// - entries added for call credentials
+//
+// Implementations must always log grpc-trace-bin if it is present.
+// Practically speaking it will only be visible on server side because
+// grpc-trace-bin is managed by low level client side mechanisms
+// inaccessible from the application level. On server side, the
+// header is just a normal metadata key.
+// The pair will not count towards the size limit.
+message Metadata {
+ repeated MetadataEntry entry = 1;
+}
+
+// A metadata key value pair
+message MetadataEntry {
+ string key = 1;
+ bytes value = 2;
+}
+
+// Address information
+message Address {
+ enum Type {
+ TYPE_UNKNOWN = 0;
+ // address is in 1.2.3.4 form
+ TYPE_IPV4 = 1;
+ // address is in IPv6 canonical form (RFC5952 section 4)
+ // The scope is NOT included in the address string.
+ TYPE_IPV6 = 2;
+ // address is UDS string
+ TYPE_UNIX = 3;
+ };
+ Type type = 1;
+ string address = 2;
+ // only for TYPE_IPV4 and TYPE_IPV6
+ uint32 ip_port = 3;
+}
diff --git a/services/src/test/java/io/grpc/services/BinlogHelperTest.java b/services/src/test/java/io/grpc/services/BinlogHelperTest.java
index 0b5961cea..a97d36496 100644
--- a/services/src/test/java/io/grpc/services/BinlogHelperTest.java
+++ b/services/src/test/java/io/grpc/services/BinlogHelperTest.java
@@ -18,13 +18,14 @@ package io.grpc.services;
import static com.google.common.truth.Truth.assertThat;
import static io.grpc.services.BinaryLogProvider.BYTEARRAY_MARSHALLER;
-import static io.grpc.services.BinlogHelper.DUMMY_SOCKET;
-import static io.grpc.services.BinlogHelper.STATUS_DETAILS_KEY;
+import static io.grpc.services.BinlogHelper.createMetadataProto;
import static io.grpc.services.BinlogHelper.getPeerSocket;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
@@ -34,12 +35,15 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
+import com.google.common.collect.Iterables;
import com.google.common.util.concurrent.SettableFuture;
+import com.google.protobuf.Any;
import com.google.protobuf.ByteString;
import com.google.protobuf.Duration;
+import com.google.protobuf.StringValue;
+import com.google.protobuf.Timestamp;
import com.google.protobuf.util.Durations;
import io.grpc.Attributes;
-import io.grpc.BinaryLog.CallId;
import io.grpc.CallOptions;
import io.grpc.Channel;
import io.grpc.ClientCall;
@@ -52,18 +56,25 @@ import io.grpc.MethodDescriptor.MethodType;
import io.grpc.ServerCall;
import io.grpc.ServerCallHandler;
import io.grpc.Status;
-import io.grpc.binarylog.v1alpha.GrpcLogEntry;
-import io.grpc.binarylog.v1alpha.Message;
-import io.grpc.binarylog.v1alpha.MetadataEntry;
-import io.grpc.binarylog.v1alpha.Peer;
-import io.grpc.binarylog.v1alpha.Peer.PeerType;
-import io.grpc.binarylog.v1alpha.Uint128;
-import io.grpc.internal.GrpcUtil;
+import io.grpc.StatusException;
+import io.grpc.binarylog.v1.Address;
+import io.grpc.binarylog.v1.Address.Type;
+import io.grpc.binarylog.v1.ClientHeader;
+import io.grpc.binarylog.v1.GrpcLogEntry;
+import io.grpc.binarylog.v1.GrpcLogEntry.EventType;
+import io.grpc.binarylog.v1.GrpcLogEntry.Logger;
+import io.grpc.binarylog.v1.Message;
+import io.grpc.binarylog.v1.MetadataEntry;
+import io.grpc.binarylog.v1.ServerHeader;
+import io.grpc.binarylog.v1.Trailer;
import io.grpc.internal.NoopClientCall;
import io.grpc.internal.NoopServerCall;
+import io.grpc.protobuf.StatusProto;
import io.grpc.services.BinlogHelper.FactoryImpl;
+import io.grpc.services.BinlogHelper.MaybeTruncated;
import io.grpc.services.BinlogHelper.SinkWriter;
import io.grpc.services.BinlogHelper.SinkWriterImpl;
+import io.grpc.services.BinlogHelper.TimeProvider;
import io.netty.channel.unix.DomainSocketAddress;
import java.net.InetAddress;
import java.net.InetSocketAddress;
@@ -102,35 +113,41 @@ public final class BinlogHelperTest {
private static final MetadataEntry ENTRY_A =
MetadataEntry
.newBuilder()
- .setKey(ByteString.copyFrom(KEY_A.name(), US_ASCII))
+ .setKey(KEY_A.name())
.setValue(ByteString.copyFrom(DATA_A.getBytes(US_ASCII)))
.build();
private static final MetadataEntry ENTRY_B =
MetadataEntry
.newBuilder()
- .setKey(ByteString.copyFrom(KEY_B.name(), US_ASCII))
+ .setKey(KEY_B.name())
.setValue(ByteString.copyFrom(DATA_B.getBytes(US_ASCII)))
.build();
private static final MetadataEntry ENTRY_C =
MetadataEntry
.newBuilder()
- .setKey(ByteString.copyFrom(KEY_C.name(), US_ASCII))
+ .setKey(KEY_C.name())
.setValue(ByteString.copyFrom(DATA_C.getBytes(US_ASCII)))
.build();
- private static final boolean IS_SERVER = true;
- private static final boolean IS_CLIENT = false;
- private static final boolean IS_COMPRESSED = true;
- private static final boolean IS_UNCOMPRESSED = false;
- // TODO(zpencer): rename this to callId, since byte[] is mutable
- private static final CallId CALL_ID =
- new CallId(0x1112131415161718L, 0x19101a1b1c1d1e1fL);
+ private static final long CALL_ID = 0x1112131415161718L;
private static final int HEADER_LIMIT = 10;
private static final int MESSAGE_LIMIT = Integer.MAX_VALUE;
private final Metadata nonEmptyMetadata = new Metadata();
private final BinaryLogSink sink = mock(BinaryLogSink.class);
+ private final Timestamp timestamp
+ = Timestamp.newBuilder().setSeconds(9876).setNanos(54321).build();
+ private final BinlogHelper.TimeProvider timeProvider = new TimeProvider() {
+ @Override
+ public long currentTimeNanos() {
+ return TimeUnit.SECONDS.toNanos(9876) + 54321;
+ }
+ };
private final SinkWriter sinkWriterImpl =
- new SinkWriterImpl(sink, HEADER_LIMIT, MESSAGE_LIMIT);
+ new SinkWriterImpl(
+ sink,
+ timeProvider,
+ HEADER_LIMIT,
+ MESSAGE_LIMIT);
private final SinkWriter mockSinkWriter = mock(SinkWriter.class);
private final byte[] message = new byte[100];
private SocketAddress peer;
@@ -338,26 +355,14 @@ public final class BinlogHelperTest {
}
@Test
- public void callIdToProto() {
- CallId callId = new CallId(0x1112131415161718L, 0x19101a1b1c1d1e1fL);
- assertEquals(
- Uint128
- .newBuilder()
- .setHigh(0x1112131415161718L)
- .setLow(0x19101a1b1c1d1e1fL)
- .build(),
- BinlogHelper.callIdToProto(callId));
- }
-
- @Test
public void socketToProto_ipv4() throws Exception {
InetAddress address = InetAddress.getByName("127.0.0.1");
int port = 12345;
InetSocketAddress socketAddress = new InetSocketAddress(address, port);
assertEquals(
- Peer
+ Address
.newBuilder()
- .setPeerType(Peer.PeerType.PEER_IPV4)
+ .setType(Type.TYPE_IPV4)
.setAddress("127.0.0.1")
.setIpPort(12345)
.build(),
@@ -371,9 +376,9 @@ public final class BinlogHelperTest {
int port = 12345;
InetSocketAddress socketAddress = new InetSocketAddress(address, port);
assertEquals(
- Peer
+ Address
.newBuilder()
- .setPeerType(Peer.PeerType.PEER_IPV6)
+ .setType(Type.TYPE_IPV6)
.setAddress("2001:db8::2:1") // RFC 5952 section 4: ipv6 canonical form required
.setIpPort(12345)
.build(),
@@ -385,9 +390,9 @@ public final class BinlogHelperTest {
String path = "/some/path";
DomainSocketAddress socketAddress = new DomainSocketAddress(path);
assertEquals(
- Peer
+ Address
.newBuilder()
- .setPeerType(Peer.PeerType.PEER_UNIX)
+ .setType(Type.TYPE_UNIX)
.setAddress("/some/path")
.build(),
BinlogHelper.socketToProto(socketAddress)
@@ -403,8 +408,8 @@ public final class BinlogHelperTest {
}
};
assertEquals(
- Peer.newBuilder()
- .setPeerType(PeerType.UNKNOWN_PEERTYPE)
+ Address.newBuilder()
+ .setType(Type.TYPE_UNKNOWN)
.setAddress("some-socket-address")
.build(),
BinlogHelper.socketToProto(unknownSocket));
@@ -414,98 +419,86 @@ public final class BinlogHelperTest {
public void metadataToProto_empty() throws Exception {
assertEquals(
GrpcLogEntry.newBuilder()
- .setMetadata(io.grpc.binarylog.v1alpha.Metadata.getDefaultInstance())
+ .setType(EventType.EVENT_TYPE_CLIENT_HEADER)
+ .setClientHeader(
+ ClientHeader.newBuilder().setMetadata(
+ io.grpc.binarylog.v1.Metadata.getDefaultInstance()))
.build(),
- metadataToProtoTestHelper(new Metadata(), Integer.MAX_VALUE));
+ metadataToProtoTestHelper(
+ EventType.EVENT_TYPE_CLIENT_HEADER, new Metadata(), Integer.MAX_VALUE));
}
@Test
public void metadataToProto() throws Exception {
assertEquals(
GrpcLogEntry.newBuilder()
- .setMetadata(
- io.grpc.binarylog.v1alpha.Metadata
+ .setType(EventType.EVENT_TYPE_CLIENT_HEADER)
+ .setClientHeader(
+ ClientHeader.newBuilder().setMetadata(
+ io.grpc.binarylog.v1.Metadata
.newBuilder()
.addEntry(ENTRY_A)
.addEntry(ENTRY_B)
.addEntry(ENTRY_C)
- .build())
+ .build()))
.build(),
- metadataToProtoTestHelper(nonEmptyMetadata, Integer.MAX_VALUE));
+ metadataToProtoTestHelper(
+ EventType.EVENT_TYPE_CLIENT_HEADER, nonEmptyMetadata, Integer.MAX_VALUE));
+ }
+
+ @Test
+ public void metadataToProto_setsTruncated() throws Exception {
+ assertTrue(BinlogHelper.createMetadataProto(nonEmptyMetadata, 0).truncated);
}
@Test
public void metadataToProto_truncated() throws Exception {
// 0 byte limit not enough for any metadata
assertEquals(
- GrpcLogEntry.newBuilder()
- .setMetadata(io.grpc.binarylog.v1alpha.Metadata.getDefaultInstance())
- .setTruncated(true)
- .build(),
- metadataToProtoTestHelper(nonEmptyMetadata, 0));
+ io.grpc.binarylog.v1.Metadata.getDefaultInstance(),
+ BinlogHelper.createMetadataProto(nonEmptyMetadata, 0).proto.build());
// not enough bytes for first key value
assertEquals(
- GrpcLogEntry.newBuilder()
- .setMetadata(io.grpc.binarylog.v1alpha.Metadata.getDefaultInstance())
- .setTruncated(true)
- .build(),
- metadataToProtoTestHelper(nonEmptyMetadata, 9));
+ io.grpc.binarylog.v1.Metadata.getDefaultInstance(),
+ BinlogHelper.createMetadataProto(nonEmptyMetadata, 9).proto.build());
// enough for first key value
assertEquals(
- GrpcLogEntry.newBuilder()
- .setMetadata(
- io.grpc.binarylog.v1alpha.Metadata
- .newBuilder()
- .addEntry(ENTRY_A)
- .build())
- .setTruncated(true)
+ io.grpc.binarylog.v1.Metadata
+ .newBuilder()
+ .addEntry(ENTRY_A)
.build(),
- metadataToProtoTestHelper(nonEmptyMetadata, 10));
+ BinlogHelper.createMetadataProto(nonEmptyMetadata, 10).proto.build());
// Test edge cases for >= 2 key values
assertEquals(
- GrpcLogEntry.newBuilder()
- .setMetadata(
- io.grpc.binarylog.v1alpha.Metadata
- .newBuilder()
- .addEntry(ENTRY_A)
- .build())
- .setTruncated(true)
+ io.grpc.binarylog.v1.Metadata
+ .newBuilder()
+ .addEntry(ENTRY_A)
.build(),
- metadataToProtoTestHelper(nonEmptyMetadata, 19));
+ BinlogHelper.createMetadataProto(nonEmptyMetadata, 19).proto.build());
assertEquals(
- GrpcLogEntry.newBuilder()
- .setMetadata(
- io.grpc.binarylog.v1alpha.Metadata
- .newBuilder()
- .addEntry(ENTRY_A)
- .addEntry(ENTRY_B)
- .build())
- .setTruncated(true)
+ io.grpc.binarylog.v1.Metadata
+ .newBuilder()
+ .addEntry(ENTRY_A)
+ .addEntry(ENTRY_B)
.build(),
- metadataToProtoTestHelper(nonEmptyMetadata, 20));
+ BinlogHelper.createMetadataProto(nonEmptyMetadata, 20).proto.build());
assertEquals(
- GrpcLogEntry.newBuilder()
- .setMetadata(
- io.grpc.binarylog.v1alpha.Metadata
- .newBuilder()
- .addEntry(ENTRY_A)
- .addEntry(ENTRY_B)
- .build())
- .setTruncated(true)
+ io.grpc.binarylog.v1.Metadata
+ .newBuilder()
+ .addEntry(ENTRY_A)
+ .addEntry(ENTRY_B)
.build(),
- metadataToProtoTestHelper(nonEmptyMetadata, 29));
+ BinlogHelper.createMetadataProto(nonEmptyMetadata, 29).proto.build());
+
// not truncated: enough for all keys
assertEquals(
- GrpcLogEntry.newBuilder()
- .setMetadata(
- io.grpc.binarylog.v1alpha.Metadata
- .newBuilder()
- .addEntry(ENTRY_A)
- .addEntry(ENTRY_B)
- .addEntry(ENTRY_C)
- .build())
+ io.grpc.binarylog.v1.Metadata
+ .newBuilder()
+ .addEntry(ENTRY_A)
+ .addEntry(ENTRY_B)
+ .addEntry(ENTRY_C)
.build(),
- metadataToProtoTestHelper(nonEmptyMetadata, 30));
+ BinlogHelper.createMetadataProto(nonEmptyMetadata, 30).proto.build());
}
@Test
@@ -518,11 +511,10 @@ public final class BinlogHelperTest {
Message
.newBuilder()
.setData(ByteString.copyFrom(bytes))
- .setFlags(0)
.setLength(bytes.length)
.build())
.build(),
- messageToProtoTestHelper(bytes, false, Integer.MAX_VALUE));
+ messageToProtoTestHelper(bytes, Integer.MAX_VALUE));
}
@Test
@@ -534,12 +526,11 @@ public final class BinlogHelperTest {
.setMessage(
Message
.newBuilder()
- .setFlags(0)
.setLength(bytes.length)
.build())
- .setTruncated(true)
+ .setPayloadTruncated(true)
.build(),
- messageToProtoTestHelper(bytes, false, 0));
+ messageToProtoTestHelper(bytes, 0));
int limit = 10;
String truncatedMessage = "this is a ";
@@ -549,312 +540,437 @@ public final class BinlogHelperTest {
Message
.newBuilder()
.setData(ByteString.copyFrom(truncatedMessage.getBytes(US_ASCII)))
- .setFlags(0)
.setLength(bytes.length)
.build())
- .setTruncated(true)
+ .setPayloadTruncated(true)
.build(),
- messageToProtoTestHelper(bytes, false, limit));
+ messageToProtoTestHelper(bytes, limit));
}
@Test
- public void toFlag() throws Exception {
- assertEquals(0, BinlogHelper.flagsForMessage(IS_UNCOMPRESSED));
- assertEquals(1, BinlogHelper.flagsForMessage(IS_COMPRESSED));
- }
+ public void logClientHeader() throws Exception {
+ long seq = 1;
+ String authority = "authority";
+ String methodName = "service/method";
+ Duration timeout = Durations.fromMillis(1234);
+ InetAddress address = InetAddress.getByName("127.0.0.1");
+ int port = 12345;
+ InetSocketAddress peerAddress = new InetSocketAddress(address, port);
+ long callId = 1000;
+
+ GrpcLogEntry.Builder builder =
+ metadataToProtoTestHelper(EventType.EVENT_TYPE_CLIENT_HEADER, nonEmptyMetadata, 10)
+ .toBuilder()
+ .setTimestamp(timestamp)
+ .setSequenceIdWithinCall(seq)
+ .setLogger(Logger.LOGGER_CLIENT)
+ .setCallId(callId);
+ builder.getClientHeaderBuilder()
+ .setMethodName("/" + methodName)
+ .setAuthority(authority)
+ .setTimeout(timeout);
+ GrpcLogEntry base = builder.build();
+ {
+ sinkWriterImpl.logClientHeader(
+ seq,
+ methodName,
+ authority,
+ timeout,
+ nonEmptyMetadata,
+ Logger.LOGGER_CLIENT,
+ callId,
+ /*peerAddress=*/ null);
+ verify(sink).write(base);
+ }
- @Test
- public void logSendInitialMetadata_server() throws Exception {
- sinkWriterImpl.logSendInitialMetadata(
- /*seq=*/ 1,
- /*methodName=*/ null,
- /*timeout=*/ null,
- nonEmptyMetadata,
- IS_SERVER,
- CALL_ID);
- verify(sink).write(
- metadataToProtoTestHelper(nonEmptyMetadata, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.SEND_INITIAL_METADATA)
- .setLogger(GrpcLogEntry.Logger.SERVER)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
- }
+ // logger is server
+ {
+ sinkWriterImpl.logClientHeader(
+ seq,
+ methodName,
+ authority,
+ timeout,
+ nonEmptyMetadata,
+ Logger.LOGGER_SERVER,
+ callId,
+ peerAddress);
+ verify(sink).write(
+ base.toBuilder()
+ .setPeer(BinlogHelper.socketToProto(peerAddress))
+ .setLogger(Logger.LOGGER_SERVER)
+ .build());
+ }
- @Test
- public void logSendInitialMetadata_client() throws Exception {
- sinkWriterImpl.logSendInitialMetadata(
- /*seq=*/ 1,
- "service/method",
- Durations.fromMillis(1234),
- nonEmptyMetadata,
- IS_CLIENT,
- CALL_ID);
- verify(sink).write(
- metadataToProtoTestHelper(nonEmptyMetadata, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setMethodName("/service/method")
- .setTimeout(Durations.fromMillis(1234))
- .setType(GrpcLogEntry.Type.SEND_INITIAL_METADATA)
- .setLogger(GrpcLogEntry.Logger.CLIENT)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
-
- sinkWriterImpl.logSendInitialMetadata(
- /*seq=*/ 1,
- "service/method",
- /*timeout=*/ null,
- nonEmptyMetadata,
- IS_CLIENT,
- CALL_ID);
- verify(sink).write(
- metadataToProtoTestHelper(nonEmptyMetadata, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setMethodName("/service/method")
- .setType(GrpcLogEntry.Type.SEND_INITIAL_METADATA)
- .setLogger(GrpcLogEntry.Logger.CLIENT)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
+ // authority is null
+ {
+ sinkWriterImpl.logClientHeader(
+ seq,
+ methodName,
+ /*authority=*/ null,
+ timeout,
+ nonEmptyMetadata,
+ Logger.LOGGER_CLIENT,
+ callId,
+ /*peerAddress=*/ null);
+
+ verify(sink).write(
+ base.toBuilder()
+ .setClientHeader(builder.getClientHeader().toBuilder().clearAuthority().build())
+ .build());
+ }
+
+ // timeout is null
+ {
+ sinkWriterImpl.logClientHeader(
+ seq,
+ methodName,
+ authority,
+ /*timeout=*/ null,
+ nonEmptyMetadata,
+ Logger.LOGGER_CLIENT,
+ callId,
+ /*peerAddress=*/ null);
+
+ verify(sink).write(
+ base.toBuilder()
+ .setClientHeader(builder.getClientHeader().toBuilder().clearTimeout().build())
+ .build());
+ }
+
+ // peerAddress is non null (error for client side)
+ try {
+ sinkWriterImpl.logClientHeader(
+ seq,
+ methodName,
+ authority,
+ timeout,
+ nonEmptyMetadata,
+ Logger.LOGGER_CLIENT,
+ callId,
+ peerAddress);
+ fail();
+ } catch (IllegalArgumentException expected) {
+ // noop
+ }
}
@Test
- public void logRecvInitialMetadata_server() throws Exception {
+ public void logServerHeader() throws Exception {
+ long seq = 1;
InetAddress address = InetAddress.getByName("127.0.0.1");
int port = 12345;
- InetSocketAddress socketAddress = new InetSocketAddress(address, port);
- sinkWriterImpl.logRecvInitialMetadata(
- /*seq=*/ 1,
- "service/method",
- Durations.fromMillis(1234),
- nonEmptyMetadata,
- IS_SERVER,
- CALL_ID,
- socketAddress);
- verify(sink).write(
- metadataToProtoTestHelper(nonEmptyMetadata, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setMethodName("/service/method")
- .setTimeout(Durations.fromMillis(1234))
- .setType(GrpcLogEntry.Type.RECV_INITIAL_METADATA)
- .setLogger(GrpcLogEntry.Logger.SERVER)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .setPeer(BinlogHelper.socketToProto(socketAddress))
- .build());
-
- sinkWriterImpl.logRecvInitialMetadata(
- /*seq=*/ 1,
- "service/method",
- /*timeout=*/ null,
- nonEmptyMetadata,
- IS_SERVER,
- CALL_ID,
- socketAddress);
- verify(sink).write(
- metadataToProtoTestHelper(nonEmptyMetadata, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setMethodName("/service/method")
- .setType(GrpcLogEntry.Type.RECV_INITIAL_METADATA)
- .setLogger(GrpcLogEntry.Logger.SERVER)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .setPeer(BinlogHelper.socketToProto(socketAddress))
- .build());
+ InetSocketAddress peerAddress = new InetSocketAddress(address, port);
+ long callId = 1000;
+
+ GrpcLogEntry.Builder builder =
+ metadataToProtoTestHelper(EventType.EVENT_TYPE_SERVER_HEADER, nonEmptyMetadata, 10)
+ .toBuilder()
+ .setTimestamp(timestamp)
+ .setSequenceIdWithinCall(seq)
+ .setLogger(Logger.LOGGER_CLIENT)
+ .setCallId(callId)
+ .setPeer(BinlogHelper.socketToProto(peerAddress));
+
+ {
+ sinkWriterImpl.logServerHeader(
+ seq,
+ nonEmptyMetadata,
+ Logger.LOGGER_CLIENT,
+ callId,
+ peerAddress);
+ verify(sink).write(builder.build());
+ }
+
+ // logger is server
+ // null peerAddress is required for server side
+ {
+ sinkWriterImpl.logServerHeader(
+ seq,
+ nonEmptyMetadata,
+ Logger.LOGGER_SERVER,
+ callId,
+ /*peerAddress=*/ null);
+ verify(sink).write(
+ builder
+ .setLogger(Logger.LOGGER_SERVER)
+ .clearPeer()
+ .build());
+ }
+
+ // logger is server
+ // non null peerAddress is an error
+ try {
+ sinkWriterImpl.logServerHeader(
+ seq,
+ nonEmptyMetadata,
+ Logger.LOGGER_SERVER,
+ callId,
+ peerAddress);
+ fail();
+ } catch (IllegalArgumentException expected) {
+ // noop
+ }
}
@Test
- public void logRecvInitialMetadata_client() throws Exception {
+ public void logTrailer() throws Exception {
+ long seq = 1;
InetAddress address = InetAddress.getByName("127.0.0.1");
int port = 12345;
- InetSocketAddress socketAddress = new InetSocketAddress(address, port);
- sinkWriterImpl.logRecvInitialMetadata(
- /*seq=*/ 1,
- /*methodName=*/ null,
- /*timeout=*/ null,
- nonEmptyMetadata,
- IS_CLIENT,
- CALL_ID,
- socketAddress);
- verify(sink).write(
- metadataToProtoTestHelper(nonEmptyMetadata, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.RECV_INITIAL_METADATA)
- .setLogger(GrpcLogEntry.Logger.CLIENT)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .setPeer(BinlogHelper.socketToProto(socketAddress))
- .build());
- }
+ InetSocketAddress peerAddress = new InetSocketAddress(address, port);
+ long callId = 1000;
+ Status statusDescription = Status.INTERNAL.withDescription("my description");
+
+ GrpcLogEntry.Builder builder =
+ metadataToProtoTestHelper(EventType.EVENT_TYPE_SERVER_TRAILER, nonEmptyMetadata, 10)
+ .toBuilder()
+ .setTimestamp(timestamp)
+ .setSequenceIdWithinCall(seq)
+ .setLogger(Logger.LOGGER_CLIENT)
+ .setCallId(callId)
+ .setPeer(BinlogHelper.socketToProto(peerAddress));
+
+ builder.getTrailerBuilder()
+ .setStatusCode(Status.INTERNAL.getCode().value())
+ .setStatusMessage("my description");
+ GrpcLogEntry base = builder.build();
- @Test
- public void logTrailingMetadata_server() throws Exception {
- sinkWriterImpl.logTrailingMetadata(/*seq=*/ 1, Status.OK, nonEmptyMetadata, IS_SERVER, CALL_ID);
- verify(sink).write(
- metadataToProtoTestHelper(nonEmptyMetadata, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.SEND_TRAILING_METADATA)
- .setLogger(GrpcLogEntry.Logger.SERVER)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
-
- Metadata detailedStatus = new Metadata();
- byte[] statusBytes = new byte[] {1, 2, 3, 4};
- detailedStatus.merge(nonEmptyMetadata);
- detailedStatus.put(STATUS_DETAILS_KEY, statusBytes);
- sinkWriterImpl.logTrailingMetadata(
- /*seq=*/ 1,
- Status.INTERNAL.withDescription("description"),
- detailedStatus,
- IS_SERVER,
- CALL_ID);
- verify(sink).write(
- metadataToProtoTestHelper(detailedStatus, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.SEND_TRAILING_METADATA)
- .setLogger(GrpcLogEntry.Logger.SERVER)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .setStatusCode(13)
- .setStatusMessage("description")
- .setStatusDetails(ByteString.copyFrom(statusBytes))
- .build());
- }
+ {
+ sinkWriterImpl.logTrailer(
+ seq,
+ statusDescription,
+ nonEmptyMetadata,
+ Logger.LOGGER_CLIENT,
+ callId,
+ peerAddress);
+ verify(sink).write(base);
+ }
- @Test
- public void logTrailingMetadata_client() throws Exception {
- sinkWriterImpl.logTrailingMetadata(/*seq=*/ 1, Status.OK, nonEmptyMetadata, IS_CLIENT, CALL_ID);
- verify(sink).write(
- metadataToProtoTestHelper(nonEmptyMetadata, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.RECV_TRAILING_METADATA)
- .setLogger(GrpcLogEntry.Logger.CLIENT)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
-
- Metadata detailedStatus = new Metadata();
- byte[] statusBytes = new byte[] {1, 2, 3, 4};
- detailedStatus.merge(nonEmptyMetadata);
- detailedStatus.put(STATUS_DETAILS_KEY, statusBytes);
- sinkWriterImpl.logTrailingMetadata(
- /*seq=*/ 1,
- Status.INTERNAL.withDescription("description"),
- detailedStatus,
- IS_CLIENT,
- CALL_ID);
- verify(sink).write(
- metadataToProtoTestHelper(detailedStatus, 10).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.RECV_TRAILING_METADATA)
- .setLogger(GrpcLogEntry.Logger.CLIENT)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .setStatusCode(13)
- .setStatusMessage("description")
- .setStatusDetails(ByteString.copyFrom(statusBytes))
- .build());
+ // logger is server
+ {
+ sinkWriterImpl.logTrailer(
+ seq,
+ statusDescription,
+ nonEmptyMetadata,
+ Logger.LOGGER_SERVER,
+ callId,
+ /*peerAddress=*/ null);
+ verify(sink).write(
+ base.toBuilder()
+ .clearPeer()
+ .setLogger(Logger.LOGGER_SERVER)
+ .build());
+ }
- }
+ // peerAddress is null
+ {
+ sinkWriterImpl.logTrailer(
+ seq,
+ statusDescription,
+ nonEmptyMetadata,
+ Logger.LOGGER_CLIENT,
+ callId,
+ /*peerAddress=*/ null);
+ verify(sink).write(
+ base.toBuilder()
+ .clearPeer()
+ .build());
+ }
- @Test
- public void logOutboundMessage_server() throws Exception {
- sinkWriterImpl.logOutboundMessage(
- /*seq=*/ 1, BYTEARRAY_MARSHALLER, message, IS_COMPRESSED, IS_SERVER, CALL_ID);
- verify(sink).write(
- messageToProtoTestHelper(message, IS_COMPRESSED, MESSAGE_LIMIT).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.SEND_MESSAGE)
- .setLogger(GrpcLogEntry.Logger.SERVER)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
-
- sinkWriterImpl.logOutboundMessage(
- /*seq=*/ 1, BYTEARRAY_MARSHALLER, message, IS_UNCOMPRESSED, IS_SERVER, CALL_ID);
- verify(sink).write(
- messageToProtoTestHelper(message, IS_UNCOMPRESSED, MESSAGE_LIMIT).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.SEND_MESSAGE)
- .setLogger(GrpcLogEntry.Logger.SERVER)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
- verifyNoMoreInteractions(sink);
+ // status code is present but description is null
+ {
+ sinkWriterImpl.logTrailer(
+ seq,
+ statusDescription.getCode().toStatus(), // strip the description
+ nonEmptyMetadata,
+ Logger.LOGGER_CLIENT,
+ callId,
+ peerAddress);
+ verify(sink).write(
+ base.toBuilder()
+ .setTrailer(base.getTrailer().toBuilder().clearStatusMessage())
+ .build());
+ }
+
+ // status proto always logged if present (com.google.rpc.Status),
+ {
+ int zeroHeaderBytes = 0;
+ SinkWriterImpl truncatingWriter = new SinkWriterImpl(
+ sink, timeProvider, zeroHeaderBytes, MESSAGE_LIMIT);
+ com.google.rpc.Status statusProto = com.google.rpc.Status.newBuilder()
+ .addDetails(
+ Any.pack(StringValue.newBuilder().setValue("arbitrarypayload").build()))
+ .setCode(Status.INTERNAL.getCode().value())
+ .setMessage("status detail string")
+ .build();
+ StatusException statusException
+ = StatusProto.toStatusException(statusProto, nonEmptyMetadata);
+ truncatingWriter.logTrailer(
+ seq,
+ statusException.getStatus(),
+ statusException.getTrailers(),
+ Logger.LOGGER_CLIENT,
+ callId,
+ peerAddress);
+ verify(sink).write(
+ base.toBuilder()
+ .setTrailer(
+ builder.getTrailerBuilder()
+ .setStatusMessage("status detail string")
+ .setStatusDetails(ByteString.copyFrom(statusProto.toByteArray()))
+ .setMetadata(io.grpc.binarylog.v1.Metadata.getDefaultInstance()))
+ .build());
+ }
}
@Test
- public void logOutboundMessage_client() throws Exception {
- sinkWriterImpl.logOutboundMessage(
- /*seq=*/ 1, BYTEARRAY_MARSHALLER, message, IS_COMPRESSED, IS_CLIENT, CALL_ID);
- verify(sink).write(
- messageToProtoTestHelper(message, IS_COMPRESSED, MESSAGE_LIMIT).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.SEND_MESSAGE)
- .setLogger(GrpcLogEntry.Logger.CLIENT)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
-
- sinkWriterImpl.logOutboundMessage(
- /*seq=*/ 1, BYTEARRAY_MARSHALLER, message, IS_UNCOMPRESSED, IS_CLIENT, CALL_ID);
- verify(sink).write(
- messageToProtoTestHelper(message, IS_UNCOMPRESSED, MESSAGE_LIMIT).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.SEND_MESSAGE)
- .setLogger(GrpcLogEntry.Logger.CLIENT)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
- verifyNoMoreInteractions(sink);
+ public void alwaysLoggedMetadata_grpcTraceBin() throws Exception {
+ Metadata.Key<byte[]> key
+ = Metadata.Key.of("grpc-trace-bin", Metadata.BINARY_BYTE_MARSHALLER);
+ Metadata metadata = new Metadata();
+ metadata.put(key, new byte[1]);
+ int zeroHeaderBytes = 0;
+ MaybeTruncated<io.grpc.binarylog.v1.Metadata.Builder> pair =
+ createMetadataProto(metadata, zeroHeaderBytes);
+ assertEquals(
+ key.name(),
+ Iterables.getOnlyElement(pair.proto.getEntryBuilderList()).getKey());
+ assertFalse(pair.truncated);
}
@Test
- public void logInboundMessage_server() throws Exception {
- sinkWriterImpl.logInboundMessage(
- /*seq=*/ 1, BYTEARRAY_MARSHALLER, message, IS_COMPRESSED, IS_SERVER, CALL_ID);
- verify(sink).write(
- messageToProtoTestHelper(message, IS_COMPRESSED, MESSAGE_LIMIT).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.RECV_MESSAGE)
- .setLogger(GrpcLogEntry.Logger.SERVER)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
-
- sinkWriterImpl.logInboundMessage(
- /*seq=*/ 1, BYTEARRAY_MARSHALLER, message, IS_UNCOMPRESSED, IS_SERVER, CALL_ID);
- verify(sink).write(
- messageToProtoTestHelper(message, IS_UNCOMPRESSED, MESSAGE_LIMIT).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.RECV_MESSAGE)
- .setLogger(GrpcLogEntry.Logger.SERVER)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
- verifyNoMoreInteractions(sink);
+ public void neverLoggedMetadata_grpcStatusDetilsBin() throws Exception {
+ Metadata.Key<byte[]> key
+ = Metadata.Key.of("grpc-status-details-bin", Metadata.BINARY_BYTE_MARSHALLER);
+ Metadata metadata = new Metadata();
+ metadata.put(key, new byte[1]);
+ int unlimitedHeaderBytes = Integer.MAX_VALUE;
+ MaybeTruncated<io.grpc.binarylog.v1.Metadata.Builder> pair
+ = createMetadataProto(metadata, unlimitedHeaderBytes);
+ assertThat(pair.proto.getEntryBuilderList()).isEmpty();
+ assertFalse(pair.truncated);
}
@Test
- public void logInboundMessage_client() throws Exception {
- sinkWriterImpl.logInboundMessage(
- /*seq=*/ 1, BYTEARRAY_MARSHALLER, message, IS_COMPRESSED, IS_CLIENT, CALL_ID);
- verify(sink).write(
- messageToProtoTestHelper(message, IS_COMPRESSED, MESSAGE_LIMIT).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.RECV_MESSAGE)
- .setLogger(GrpcLogEntry.Logger.CLIENT)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
-
- sinkWriterImpl.logInboundMessage(
- /*seq=*/ 1, BYTEARRAY_MARSHALLER, message, IS_UNCOMPRESSED, IS_CLIENT, CALL_ID);
- verify(sink).write(
- messageToProtoTestHelper(message, IS_UNCOMPRESSED, MESSAGE_LIMIT).toBuilder()
- .setSequenceIdWithinCall(1)
- .setType(GrpcLogEntry.Type.RECV_MESSAGE)
- .setLogger(GrpcLogEntry.Logger.CLIENT)
- .setCallId(BinlogHelper.callIdToProto(CALL_ID))
- .build());
- verifyNoMoreInteractions(sink);
+ public void logRpcMessage() throws Exception {
+ long seq = 1;
+ long callId = 1000;
+ GrpcLogEntry base = messageToProtoTestHelper(message, MESSAGE_LIMIT).toBuilder()
+ .setTimestamp(timestamp)
+ .setType(EventType.EVENT_TYPE_CLIENT_MESSAGE)
+ .setLogger(Logger.LOGGER_CLIENT)
+ .setSequenceIdWithinCall(1)
+ .setCallId(callId)
+ .build();
+ {
+ sinkWriterImpl.logRpcMessage(
+ seq,
+ EventType.EVENT_TYPE_CLIENT_MESSAGE,
+ BYTEARRAY_MARSHALLER,
+ message,
+ Logger.LOGGER_CLIENT,
+ callId);
+ verify(sink).write(base);
+ }
+
+ // server messsage
+ {
+ sinkWriterImpl.logRpcMessage(
+ seq,
+ EventType.EVENT_TYPE_SERVER_MESSAGE,
+ BYTEARRAY_MARSHALLER,
+ message,
+ Logger.LOGGER_CLIENT,
+ callId);
+ verify(sink).write(
+ base.toBuilder()
+ .setType(EventType.EVENT_TYPE_SERVER_MESSAGE)
+ .build());
+ }
+
+ // logger is server
+ {
+ sinkWriterImpl.logRpcMessage(
+ seq,
+ EventType.EVENT_TYPE_CLIENT_MESSAGE,
+ BYTEARRAY_MARSHALLER,
+ message,
+ Logger.LOGGER_SERVER,
+ callId);
+ verify(sink).write(
+ base.toBuilder()
+ .setLogger(Logger.LOGGER_SERVER)
+ .build());
+ }
}
@Test
public void getPeerSocketTest() {
- assertSame(DUMMY_SOCKET, getPeerSocket(Attributes.EMPTY));
+ assertNull(getPeerSocket(Attributes.EMPTY));
assertSame(
peer,
getPeerSocket(Attributes.newBuilder().set(Grpc.TRANSPORT_ATTR_REMOTE_ADDR, peer).build()));
}
@Test
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ public void serverDeadlineLogged() {
+ final AtomicReference<ServerCall> interceptedCall =
+ new AtomicReference<ServerCall>();
+ final ServerCall.Listener mockListener = mock(ServerCall.Listener.class);
+
+ final MethodDescriptor<byte[], byte[]> method =
+ MethodDescriptor.<byte[], byte[]>newBuilder()
+ .setType(MethodType.UNKNOWN)
+ .setFullMethodName("service/method")
+ .setRequestMarshaller(BYTEARRAY_MARSHALLER)
+ .setResponseMarshaller(BYTEARRAY_MARSHALLER)
+ .build();
+
+ // We expect the contents of the "grpc-timeout" header to be installed the context
+ Context.current()
+ .withDeadlineAfter(1, TimeUnit.SECONDS, Executors.newSingleThreadScheduledExecutor())
+ .run(new Runnable() {
+ @Override
+ public void run() {
+ ServerCall.Listener<byte[]> unused =
+ new BinlogHelper(mockSinkWriter)
+ .getServerInterceptor(CALL_ID)
+ .interceptCall(
+ new NoopServerCall<byte[], byte[]>() {
+ @Override
+ public MethodDescriptor<byte[], byte[]> getMethodDescriptor() {
+ return method;
+ }
+ },
+ new Metadata(),
+ new ServerCallHandler<byte[], byte[]>() {
+ @Override
+ public ServerCall.Listener<byte[]> startCall(
+ ServerCall<byte[], byte[]> call,
+ Metadata headers) {
+ interceptedCall.set(call);
+ return mockListener;
+ }
+ });
+ }
+ });
+ ArgumentCaptor<Duration> timeoutCaptor = ArgumentCaptor.forClass(Duration.class);
+ verify(mockSinkWriter).logClientHeader(
+ /*seq=*/ eq(1L),
+ eq("service/method"),
+ isNull(String.class),
+ timeoutCaptor.capture(),
+ any(Metadata.class),
+ eq(Logger.LOGGER_SERVER),
+ eq(CALL_ID),
+ isNull(SocketAddress.class));
+ verifyNoMoreInteractions(mockSinkWriter);
+ assertThat(TimeUnit.SECONDS.toNanos(1) - timeoutCaptor.getValue().getNanos())
+ .isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
+ }
+
+ @Test
@SuppressWarnings({"unchecked"})
public void clientDeadlineLogged_deadlineSetViaCallOption() {
MethodDescriptor<byte[], byte[]> method =
@@ -887,13 +1003,15 @@ public final class BinlogHelperTest {
});
call.start(mockListener, new Metadata());
ArgumentCaptor<Duration> callOptTimeoutCaptor = ArgumentCaptor.forClass(Duration.class);
- verify(mockSinkWriter).logSendInitialMetadata(
+ verify(mockSinkWriter).logClientHeader(
any(Integer.class),
any(String.class),
+ any(String.class),
callOptTimeoutCaptor.capture(),
any(Metadata.class),
- any(Boolean.class),
- any(CallId.class));
+ any(GrpcLogEntry.Logger.class),
+ any(Long.class),
+ any(SocketAddress.class));
Duration timeout = callOptTimeoutCaptor.getValue();
assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout))
.isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
@@ -941,13 +1059,15 @@ public final class BinlogHelperTest {
ClientCall.Listener<byte[]> mockListener = mock(ClientCall.Listener.class);
callFuture.get().start(mockListener, new Metadata());
ArgumentCaptor<Duration> callOptTimeoutCaptor = ArgumentCaptor.forClass(Duration.class);
- verify(mockSinkWriter).logSendInitialMetadata(
+ verify(mockSinkWriter).logClientHeader(
any(Integer.class),
any(String.class),
+ any(String.class),
callOptTimeoutCaptor.capture(),
any(Metadata.class),
- any(Boolean.class),
- any(CallId.class));
+ any(GrpcLogEntry.Logger.class),
+ any(Long.class),
+ any(SocketAddress.class));
Duration timeout = callOptTimeoutCaptor.getValue();
assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout))
.isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
@@ -987,7 +1107,7 @@ public final class BinlogHelperTest {
@Override
public String authority() {
- throw new UnsupportedOperationException();
+ return "the-authority";
}
};
@@ -1005,86 +1125,187 @@ public final class BinlogHelperTest {
.getClientInterceptor(CALL_ID)
.interceptCall(
method,
- CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS),
+ CallOptions.DEFAULT,
channel);
- // send initial metadata
+ // send client header
{
Metadata clientInitial = new Metadata();
interceptedCall.start(mockListener, clientInitial);
- ArgumentCaptor<Duration> timeoutCaptor = ArgumentCaptor.forClass(Duration.class);
- verify(mockSinkWriter).logSendInitialMetadata(
- /*seq=*/ eq(1),
+ verify(mockSinkWriter).logClientHeader(
+ /*seq=*/ eq(1L),
eq("service/method"),
- timeoutCaptor.capture(),
+ eq("the-authority"),
+ isNull(Duration.class),
same(clientInitial),
- eq(IS_CLIENT),
- same(CALL_ID));
+ eq(Logger.LOGGER_CLIENT),
+ eq(CALL_ID),
+ isNull(SocketAddress.class));
verifyNoMoreInteractions(mockSinkWriter);
- Duration timeout = timeoutCaptor.getValue();
- assertThat(TimeUnit.SECONDS.toNanos(1) - Durations.toNanos(timeout))
- .isAtMost(TimeUnit.MILLISECONDS.toNanos(250));
assertSame(clientInitial, actualClientInitial.get());
}
- // receive initial metadata
+ // receive server header
{
Metadata serverInitial = new Metadata();
interceptedListener.get().onHeaders(serverInitial);
- verify(mockSinkWriter).logRecvInitialMetadata(
- /*seq=*/ eq(2),
- isNull(String.class),
- isNull(Duration.class),
+ verify(mockSinkWriter).logServerHeader(
+ /*seq=*/ eq(2L),
same(serverInitial),
- eq(IS_CLIENT),
- same(CALL_ID),
+ eq(Logger.LOGGER_CLIENT),
+ eq(CALL_ID),
same(peer));
verifyNoMoreInteractions(mockSinkWriter);
verify(mockListener).onHeaders(same(serverInitial));
}
- // send request
+ // send client msg
{
byte[] request = "this is a request".getBytes(US_ASCII);
interceptedCall.sendMessage(request);
- verify(mockSinkWriter).logOutboundMessage(
- /*seq=*/ eq(3),
+ verify(mockSinkWriter).logRpcMessage(
+ /*seq=*/ eq(3L),
+ eq(EventType.EVENT_TYPE_CLIENT_MESSAGE),
same(BYTEARRAY_MARSHALLER),
same(request),
- eq(BinlogHelper.DUMMY_IS_COMPRESSED),
- eq(IS_CLIENT),
- same(CALL_ID));
+ eq(Logger.LOGGER_CLIENT),
+ eq(CALL_ID));
verifyNoMoreInteractions(mockSinkWriter);
assertSame(request, actualRequest.get());
}
- // receive response
+ // client half close
+ {
+ interceptedCall.halfClose();
+ verify(mockSinkWriter).logHalfClose(
+ /*seq=*/ eq(4L),
+ eq(Logger.LOGGER_CLIENT),
+ eq(CALL_ID));
+ verifyNoMoreInteractions(mockSinkWriter);
+ }
+
+ // receive server msg
{
byte[] response = "this is a response".getBytes(US_ASCII);
interceptedListener.get().onMessage(response);
- verify(mockSinkWriter).logInboundMessage(
- /*seq=*/ eq(4),
+ verify(mockSinkWriter).logRpcMessage(
+ /*seq=*/ eq(5L),
+ eq(EventType.EVENT_TYPE_SERVER_MESSAGE),
same(BYTEARRAY_MARSHALLER),
- eq(response),
- eq(BinlogHelper.DUMMY_IS_COMPRESSED),
- eq(IS_CLIENT),
- same(CALL_ID));
+ same(response),
+ eq(Logger.LOGGER_CLIENT),
+ eq(CALL_ID));
verifyNoMoreInteractions(mockSinkWriter);
verify(mockListener).onMessage(same(response));
}
- // receive trailers
+ // receive trailer
{
Status status = Status.INTERNAL.withDescription("some description");
Metadata trailers = new Metadata();
interceptedListener.get().onClose(status, trailers);
- verify(mockSinkWriter).logTrailingMetadata(
- /*seq=*/ eq(5),
+ verify(mockSinkWriter).logTrailer(
+ /*seq=*/ eq(6L),
same(status),
same(trailers),
- eq(IS_CLIENT),
- same(CALL_ID));
+ eq(Logger.LOGGER_CLIENT),
+ eq(CALL_ID),
+ isNull(SocketAddress.class));
+ verifyNoMoreInteractions(mockSinkWriter);
+ verify(mockListener).onClose(same(status), same(trailers));
+ }
+
+ // cancel
+ {
+ interceptedCall.cancel(null, null);
+ verify(mockSinkWriter).logCancel(
+ /*seq=*/ eq(7L),
+ eq(Logger.LOGGER_CLIENT),
+ eq(CALL_ID));
+ }
+ }
+
+ @Test
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ public void clientInterceptor_trailersOnlyResponseLogsPeerAddress() throws Exception {
+ final AtomicReference<ClientCall.Listener> interceptedListener =
+ new AtomicReference<ClientCall.Listener>();
+ // capture these manually because ClientCall can not be mocked
+ final AtomicReference<Metadata> actualClientInitial = new AtomicReference<Metadata>();
+ final AtomicReference<Object> actualRequest = new AtomicReference<Object>();
+
+ Channel channel = new Channel() {
+ @Override
+ public <RequestT, ResponseT> ClientCall<RequestT, ResponseT> newCall(
+ MethodDescriptor<RequestT, ResponseT> methodDescriptor, CallOptions callOptions) {
+ return new NoopClientCall<RequestT, ResponseT>() {
+ @Override
+ public void start(Listener<ResponseT> responseListener, Metadata headers) {
+ interceptedListener.set(responseListener);
+ actualClientInitial.set(headers);
+ }
+
+ @Override
+ public void sendMessage(RequestT message) {
+ actualRequest.set(message);
+ }
+
+ @Override
+ public Attributes getAttributes() {
+ return Attributes.newBuilder().set(Grpc.TRANSPORT_ATTR_REMOTE_ADDR, peer).build();
+ }
+ };
+ }
+
+ @Override
+ public String authority() {
+ return "the-authority";
+ }
+ };
+
+ ClientCall.Listener<byte[]> mockListener = mock(ClientCall.Listener.class);
+
+ MethodDescriptor<byte[], byte[]> method =
+ MethodDescriptor.<byte[], byte[]>newBuilder()
+ .setType(MethodType.UNKNOWN)
+ .setFullMethodName("service/method")
+ .setRequestMarshaller(BYTEARRAY_MARSHALLER)
+ .setResponseMarshaller(BYTEARRAY_MARSHALLER)
+ .build();
+ ClientCall<byte[], byte[]> interceptedCall =
+ new BinlogHelper(mockSinkWriter)
+ .getClientInterceptor(CALL_ID)
+ .interceptCall(
+ method,
+ CallOptions.DEFAULT.withDeadlineAfter(1, TimeUnit.SECONDS),
+ channel);
+ Metadata clientInitial = new Metadata();
+ interceptedCall.start(mockListener, clientInitial);
+ verify(mockSinkWriter).logClientHeader(
+ /*seq=*/ eq(1L),
+ any(String.class),
+ any(String.class),
+ any(Duration.class),
+ any(Metadata.class),
+ eq(Logger.LOGGER_CLIENT),
+ eq(CALL_ID),
+ isNull(SocketAddress.class));
+ verifyNoMoreInteractions(mockSinkWriter);
+
+ // trailer only response
+ {
+ Status status = Status.INTERNAL.withDescription("some description");
+ Metadata trailers = new Metadata();
+
+ interceptedListener.get().onClose(status, trailers);
+ verify(mockSinkWriter).logTrailer(
+ /*seq=*/ eq(2L),
+ same(status),
+ same(trailers),
+ eq(Logger.LOGGER_CLIENT),
+ eq(CALL_ID),
+ same(peer));
verifyNoMoreInteractions(mockSinkWriter);
verify(mockListener).onClose(same(status), same(trailers));
}
@@ -1103,10 +1324,9 @@ public final class BinlogHelperTest {
final AtomicReference<Status> actualStatus = new AtomicReference<Status>();
final AtomicReference<Metadata> actualTrailers = new AtomicReference<Metadata>();
- // begin call and receive initial metadata
+ // begin call and receive client header
{
Metadata clientInitial = new Metadata();
- clientInitial.put(GrpcUtil.TIMEOUT_KEY, TimeUnit.MILLISECONDS.toNanos(1234));
final MethodDescriptor<byte[], byte[]> method =
MethodDescriptor.<byte[], byte[]>newBuilder()
.setType(MethodType.UNKNOWN)
@@ -1147,6 +1367,11 @@ public final class BinlogHelperTest {
.set(Grpc.TRANSPORT_ATTR_REMOTE_ADDR, peer)
.build();
}
+
+ @Override
+ public String getAuthority() {
+ return "the-authority";
+ }
},
clientInitial,
new ServerCallHandler<byte[], byte[]>() {
@@ -1158,77 +1383,97 @@ public final class BinlogHelperTest {
return mockListener;
}
});
- verify(mockSinkWriter).logRecvInitialMetadata(
- /*seq=*/ eq(1),
+ verify(mockSinkWriter).logClientHeader(
+ /*seq=*/ eq(1L),
eq("service/method"),
- eq(Durations.fromMillis(1234)),
+ eq("the-authority"),
+ isNull(Duration.class),
same(clientInitial),
- eq(IS_SERVER),
- same(CALL_ID),
+ eq(Logger.LOGGER_SERVER),
+ eq(CALL_ID),
same(peer));
verifyNoMoreInteractions(mockSinkWriter);
}
- // send initial metadata
+ // send server header
{
Metadata serverInital = new Metadata();
interceptedCall.get().sendHeaders(serverInital);
- verify(mockSinkWriter).logSendInitialMetadata(
- /*seq=*/ eq(2),
- isNull(String.class),
- isNull(Duration.class),
+ verify(mockSinkWriter).logServerHeader(
+ /*seq=*/ eq(2L),
same(serverInital),
- eq(IS_SERVER),
- same(CALL_ID));
+ eq(Logger.LOGGER_SERVER),
+ eq(CALL_ID),
+ isNull(SocketAddress.class));
verifyNoMoreInteractions(mockSinkWriter);
assertSame(serverInital, actualServerInitial.get());
}
- // receive request
+ // receive client msg
{
byte[] request = "this is a request".getBytes(US_ASCII);
capturedListener.onMessage(request);
- verify(mockSinkWriter).logInboundMessage(
- /*seq=*/ eq(3),
+ verify(mockSinkWriter).logRpcMessage(
+ /*seq=*/ eq(3L),
+ eq(EventType.EVENT_TYPE_CLIENT_MESSAGE),
same(BYTEARRAY_MARSHALLER),
same(request),
- eq(BinlogHelper.DUMMY_IS_COMPRESSED),
- eq(IS_SERVER),
- same(CALL_ID));
+ eq(Logger.LOGGER_SERVER),
+ eq(CALL_ID));
verifyNoMoreInteractions(mockSinkWriter);
verify(mockListener).onMessage(same(request));
}
- // send response
+ // client half close
+ {
+ capturedListener.onHalfClose();
+ verify(mockSinkWriter).logHalfClose(
+ eq(4L),
+ eq(Logger.LOGGER_SERVER),
+ eq(CALL_ID));
+ verifyNoMoreInteractions(mockSinkWriter);
+ }
+
+ // send server msg
{
byte[] response = "this is a response".getBytes(US_ASCII);
interceptedCall.get().sendMessage(response);
- verify(mockSinkWriter).logOutboundMessage(
- /*seq=*/ eq(4),
+ verify(mockSinkWriter).logRpcMessage(
+ /*seq=*/ eq(5L),
+ eq(EventType.EVENT_TYPE_SERVER_MESSAGE),
same(BYTEARRAY_MARSHALLER),
same(response),
- eq(BinlogHelper.DUMMY_IS_COMPRESSED),
- eq(IS_SERVER),
- same(CALL_ID));
+ eq(Logger.LOGGER_SERVER),
+ eq(CALL_ID));
verifyNoMoreInteractions(mockSinkWriter);
assertSame(response, actualResponse.get());
}
- // send trailers
+ // send trailer
{
Status status = Status.INTERNAL.withDescription("some description");
Metadata trailers = new Metadata();
interceptedCall.get().close(status, trailers);
- verify(mockSinkWriter).logTrailingMetadata(
- /*seq=*/ eq(5),
+ verify(mockSinkWriter).logTrailer(
+ /*seq=*/ eq(6L),
same(status),
same(trailers),
- eq(IS_SERVER),
- same(CALL_ID));
+ eq(Logger.LOGGER_SERVER),
+ eq(CALL_ID),
+ isNull(SocketAddress.class));
verifyNoMoreInteractions(mockSinkWriter);
assertSame(status, actualStatus.get());
assertSame(trailers, actualTrailers.get());
}
+
+ // cancel
+ {
+ capturedListener.onCancel();
+ verify(mockSinkWriter).logCancel(
+ /*seq=*/ eq(7L),
+ eq(Logger.LOGGER_SERVER),
+ eq(CALL_ID));
+ }
}
/** A builder class to make unit test code more readable. */
@@ -1248,7 +1493,7 @@ public final class BinlogHelperTest {
BinlogHelper build() {
return new BinlogHelper(
- new SinkWriterImpl(mock(BinaryLogSink.class), maxHeaderBytes, maxMessageBytes));
+ new SinkWriterImpl(mock(BinaryLogSink.class), null, maxHeaderBytes, maxMessageBytes));
}
}
@@ -1266,16 +1511,33 @@ public final class BinlogHelperTest {
}
private static GrpcLogEntry metadataToProtoTestHelper(
- Metadata metadata, int maxHeaderBytes) {
+ EventType type, Metadata metadata, int maxHeaderBytes) {
GrpcLogEntry.Builder builder = GrpcLogEntry.newBuilder();
- BinlogHelper.addMetadataToProto(builder, metadata, maxHeaderBytes);
+ MaybeTruncated<io.grpc.binarylog.v1.Metadata.Builder> pair
+ = BinlogHelper.createMetadataProto(metadata, maxHeaderBytes);
+ switch (type) {
+ case EVENT_TYPE_CLIENT_HEADER:
+ builder.setClientHeader(ClientHeader.newBuilder().setMetadata(pair.proto));
+ break;
+ case EVENT_TYPE_SERVER_HEADER:
+ builder.setServerHeader(ServerHeader.newBuilder().setMetadata(pair.proto));
+ break;
+ case EVENT_TYPE_SERVER_TRAILER:
+ builder.setTrailer(Trailer.newBuilder().setMetadata(pair.proto));
+ break;
+ default:
+ throw new IllegalArgumentException();
+ }
+ builder.setType(type).setPayloadTruncated(pair.truncated);
return builder.build();
}
private static GrpcLogEntry messageToProtoTestHelper(
- byte[] message, boolean compressed, int maxMessageBytes) {
+ byte[] message, int maxMessageBytes) {
GrpcLogEntry.Builder builder = GrpcLogEntry.newBuilder();
- BinlogHelper.messageToProto(builder, message, compressed, maxMessageBytes);
+ MaybeTruncated<Message.Builder> pair
+ = BinlogHelper.createMessageProto(message, maxMessageBytes);
+ builder.setMessage(pair.proto).setPayloadTruncated(pair.truncated);
return builder.build();
}
}