grpc.binlog.v1.binarylog.proto Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of akka-grpc-interop-tests_2.13 Show documentation
Show all versions of akka-grpc-interop-tests_2.13 Show documentation
Akka gRPC - Support for building streaming gRPC servers and clients on top of Akka Streams.
// 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:
// //
// 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
// or : .
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;
}