diff options
author | zpencer <spencerfang@google.com> | 2018-09-27 13:19:24 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-27 13:19:24 -0700 |
commit | da87ffb329f70d907a010dbda0bd655dda8f1cc8 (patch) | |
tree | 26ac04bb30b2d015dee69af54ffe54b35a0ec3d9 /services | |
parent | 69bb8a37f85fa07be418704ffb25573c133c0a4f (diff) | |
download | grpc-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')
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: + * /<service>/<method> + * 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: + * /<service>/<method> + * 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 + * <host> or <host>:<port> . + * </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 + * <host> or <host>:<port> . + * </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: + * /<service>/<method> + * 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: + * /<service>/<method> + * 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: + * /<service>/<method> + * 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: + * /<service>/<method> + * 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: + * /<service>/<method> + * 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 + * <host> or <host>:<port> . + * </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 + * <host> or <host>:<port> . + * </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 + * <host> or <host>:<port> . + * </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 + * <host> or <host>:<port> . + * </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 + * <host> or <host>:<port> . + * </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: + * /<service>/<method> + * 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: + * /<service>/<method> + * 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 + * <host> or <host>:<port> . + * </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 + * <host> or <host>:<port> . + * </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(); } } |