564 lines
19 KiB
Protocol Buffer
564 lines
19 KiB
Protocol Buffer
|
// Copyright 2018 The gRPC Authors
|
||
|
//
|
||
|
// 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.
|
||
|
|
||
|
// This file defines an interface for exporting monitoring information
|
||
|
// out of gRPC servers. See the full design at
|
||
|
// https://github.com/grpc/proposal/blob/master/A14-channelz.md
|
||
|
//
|
||
|
// The canonical version of this proto can be found at
|
||
|
// https://github.com/grpc/grpc-proto/blob/master/grpc/channelz/v1/channelz.proto
|
||
|
|
||
|
syntax = "proto3";
|
||
|
|
||
|
package grpc.channelz.v1;
|
||
|
|
||
|
import "google/protobuf/any.proto";
|
||
|
import "google/protobuf/duration.proto";
|
||
|
import "google/protobuf/timestamp.proto";
|
||
|
import "google/protobuf/wrappers.proto";
|
||
|
|
||
|
option go_package = "google.golang.org/grpc/channelz/grpc_channelz_v1";
|
||
|
option java_multiple_files = true;
|
||
|
option java_package = "io.grpc.channelz.v1";
|
||
|
option java_outer_classname = "ChannelzProto";
|
||
|
|
||
|
// Channel is a logical grouping of channels, subchannels, and sockets.
|
||
|
message Channel {
|
||
|
// The identifier for this channel. This should bet set.
|
||
|
ChannelRef ref = 1;
|
||
|
// Data specific to this channel.
|
||
|
ChannelData data = 2;
|
||
|
// At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
|
||
|
|
||
|
// There are no ordering guarantees on the order of channel refs.
|
||
|
// There may not be cycles in the ref graph.
|
||
|
// A channel ref may be present in more than one channel or subchannel.
|
||
|
repeated ChannelRef channel_ref = 3;
|
||
|
|
||
|
// At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
|
||
|
// There are no ordering guarantees on the order of subchannel refs.
|
||
|
// There may not be cycles in the ref graph.
|
||
|
// A sub channel ref may be present in more than one channel or subchannel.
|
||
|
repeated SubchannelRef subchannel_ref = 4;
|
||
|
|
||
|
// There are no ordering guarantees on the order of sockets.
|
||
|
repeated SocketRef socket_ref = 5;
|
||
|
}
|
||
|
|
||
|
// Subchannel is a logical grouping of channels, subchannels, and sockets.
|
||
|
// A subchannel is load balanced over by it's ancestor
|
||
|
message Subchannel {
|
||
|
// The identifier for this channel.
|
||
|
SubchannelRef ref = 1;
|
||
|
// Data specific to this channel.
|
||
|
ChannelData data = 2;
|
||
|
// At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
|
||
|
|
||
|
// There are no ordering guarantees on the order of channel refs.
|
||
|
// There may not be cycles in the ref graph.
|
||
|
// A channel ref may be present in more than one channel or subchannel.
|
||
|
repeated ChannelRef channel_ref = 3;
|
||
|
|
||
|
// At most one of 'channel_ref+subchannel_ref' and 'socket' is set.
|
||
|
// There are no ordering guarantees on the order of subchannel refs.
|
||
|
// There may not be cycles in the ref graph.
|
||
|
// A sub channel ref may be present in more than one channel or subchannel.
|
||
|
repeated SubchannelRef subchannel_ref = 4;
|
||
|
|
||
|
// There are no ordering guarantees on the order of sockets.
|
||
|
repeated SocketRef socket_ref = 5;
|
||
|
}
|
||
|
|
||
|
// These come from the specified states in this document:
|
||
|
// https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md
|
||
|
message ChannelConnectivityState {
|
||
|
enum State {
|
||
|
UNKNOWN = 0;
|
||
|
IDLE = 1;
|
||
|
CONNECTING = 2;
|
||
|
READY = 3;
|
||
|
TRANSIENT_FAILURE = 4;
|
||
|
SHUTDOWN = 5;
|
||
|
}
|
||
|
State state = 1;
|
||
|
}
|
||
|
|
||
|
// Channel data is data related to a specific Channel or Subchannel.
|
||
|
message ChannelData {
|
||
|
// The connectivity state of the channel or subchannel. Implementations
|
||
|
// should always set this.
|
||
|
ChannelConnectivityState state = 1;
|
||
|
|
||
|
// The target this channel originally tried to connect to. May be absent
|
||
|
string target = 2;
|
||
|
|
||
|
// A trace of recent events on the channel. May be absent.
|
||
|
ChannelTrace trace = 3;
|
||
|
|
||
|
// The number of calls started on the channel
|
||
|
int64 calls_started = 4;
|
||
|
// The number of calls that have completed with an OK status
|
||
|
int64 calls_succeeded = 5;
|
||
|
// The number of calls that have completed with a non-OK status
|
||
|
int64 calls_failed = 6;
|
||
|
|
||
|
// The last time a call was started on the channel.
|
||
|
google.protobuf.Timestamp last_call_started_timestamp = 7;
|
||
|
}
|
||
|
|
||
|
// A trace event is an interesting thing that happened to a channel or
|
||
|
// subchannel, such as creation, address resolution, subchannel creation, etc.
|
||
|
message ChannelTraceEvent {
|
||
|
// High level description of the event.
|
||
|
string description = 1;
|
||
|
// The supported severity levels of trace events.
|
||
|
enum Severity {
|
||
|
CT_UNKNOWN = 0;
|
||
|
CT_INFO = 1;
|
||
|
CT_WARNING = 2;
|
||
|
CT_ERROR = 3;
|
||
|
}
|
||
|
// the severity of the trace event
|
||
|
Severity severity = 2;
|
||
|
// When this event occurred.
|
||
|
google.protobuf.Timestamp timestamp = 3;
|
||
|
// ref of referenced channel or subchannel.
|
||
|
// Optional, only present if this event refers to a child object. For example,
|
||
|
// this field would be filled if this trace event was for a subchannel being
|
||
|
// created.
|
||
|
oneof child_ref {
|
||
|
ChannelRef channel_ref = 4;
|
||
|
SubchannelRef subchannel_ref = 5;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// ChannelTrace represents the recent events that have occurred on the channel.
|
||
|
message ChannelTrace {
|
||
|
// Number of events ever logged in this tracing object. This can differ from
|
||
|
// events.size() because events can be overwritten or garbage collected by
|
||
|
// implementations.
|
||
|
int64 num_events_logged = 1;
|
||
|
// Time that this channel was created.
|
||
|
google.protobuf.Timestamp creation_timestamp = 2;
|
||
|
// List of events that have occurred on this channel.
|
||
|
repeated ChannelTraceEvent events = 3;
|
||
|
}
|
||
|
|
||
|
// ChannelRef is a reference to a Channel.
|
||
|
message ChannelRef {
|
||
|
// The globally unique id for this channel. Must be a positive number.
|
||
|
int64 channel_id = 1;
|
||
|
// An optional name associated with the channel.
|
||
|
string name = 2;
|
||
|
// Intentionally don't use field numbers from other refs.
|
||
|
reserved 3, 4, 5, 6, 7, 8;
|
||
|
}
|
||
|
|
||
|
// SubchannelRef is a reference to a Subchannel.
|
||
|
message SubchannelRef {
|
||
|
// The globally unique id for this subchannel. Must be a positive number.
|
||
|
int64 subchannel_id = 7;
|
||
|
// An optional name associated with the subchannel.
|
||
|
string name = 8;
|
||
|
// Intentionally don't use field numbers from other refs.
|
||
|
reserved 1, 2, 3, 4, 5, 6;
|
||
|
}
|
||
|
|
||
|
// SocketRef is a reference to a Socket.
|
||
|
message SocketRef {
|
||
|
// The globally unique id for this socket. Must be a positive number.
|
||
|
int64 socket_id = 3;
|
||
|
// An optional name associated with the socket.
|
||
|
string name = 4;
|
||
|
// Intentionally don't use field numbers from other refs.
|
||
|
reserved 1, 2, 5, 6, 7, 8;
|
||
|
}
|
||
|
|
||
|
// ServerRef is a reference to a Server.
|
||
|
message ServerRef {
|
||
|
// A globally unique identifier for this server. Must be a positive number.
|
||
|
int64 server_id = 5;
|
||
|
// An optional name associated with the server.
|
||
|
string name = 6;
|
||
|
// Intentionally don't use field numbers from other refs.
|
||
|
reserved 1, 2, 3, 4, 7, 8;
|
||
|
}
|
||
|
|
||
|
// Server represents a single server. There may be multiple servers in a single
|
||
|
// program.
|
||
|
message Server {
|
||
|
// The identifier for a Server. This should be set.
|
||
|
ServerRef ref = 1;
|
||
|
// The associated data of the Server.
|
||
|
ServerData data = 2;
|
||
|
|
||
|
// The sockets that the server is listening on. There are no ordering
|
||
|
// guarantees. This may be absent.
|
||
|
repeated SocketRef listen_socket = 3;
|
||
|
}
|
||
|
|
||
|
// ServerData is data for a specific Server.
|
||
|
message ServerData {
|
||
|
// A trace of recent events on the server. May be absent.
|
||
|
ChannelTrace trace = 1;
|
||
|
|
||
|
// The number of incoming calls started on the server
|
||
|
int64 calls_started = 2;
|
||
|
// The number of incoming calls that have completed with an OK status
|
||
|
int64 calls_succeeded = 3;
|
||
|
// The number of incoming calls that have a completed with a non-OK status
|
||
|
int64 calls_failed = 4;
|
||
|
|
||
|
// The last time a call was started on the server.
|
||
|
google.protobuf.Timestamp last_call_started_timestamp = 5;
|
||
|
}
|
||
|
|
||
|
// Information about an actual connection. Pronounced "sock-ay".
|
||
|
message Socket {
|
||
|
// The identifier for the Socket.
|
||
|
SocketRef ref = 1;
|
||
|
|
||
|
// Data specific to this Socket.
|
||
|
SocketData data = 2;
|
||
|
// The locally bound address.
|
||
|
Address local = 3;
|
||
|
// The remote bound address. May be absent.
|
||
|
Address remote = 4;
|
||
|
// Security details for this socket. May be absent if not available, or
|
||
|
// there is no security on the socket.
|
||
|
Security security = 5;
|
||
|
|
||
|
// Optional, represents the name of the remote endpoint, if different than
|
||
|
// the original target name.
|
||
|
string remote_name = 6;
|
||
|
}
|
||
|
|
||
|
// SocketData is data associated for a specific Socket. The fields present
|
||
|
// are specific to the implementation, so there may be minor differences in
|
||
|
// the semantics. (e.g. flow control windows)
|
||
|
message SocketData {
|
||
|
// The number of streams that have been started.
|
||
|
int64 streams_started = 1;
|
||
|
// The number of streams that have ended successfully:
|
||
|
// On client side, received frame with eos bit set;
|
||
|
// On server side, sent frame with eos bit set.
|
||
|
int64 streams_succeeded = 2;
|
||
|
// The number of streams that have ended unsuccessfully:
|
||
|
// On client side, ended without receiving frame with eos bit set;
|
||
|
// On server side, ended without sending frame with eos bit set.
|
||
|
int64 streams_failed = 3;
|
||
|
// The number of grpc messages successfully sent on this socket.
|
||
|
int64 messages_sent = 4;
|
||
|
// The number of grpc messages received on this socket.
|
||
|
int64 messages_received = 5;
|
||
|
|
||
|
// The number of keep alives sent. This is typically implemented with HTTP/2
|
||
|
// ping messages.
|
||
|
int64 keep_alives_sent = 6;
|
||
|
|
||
|
// The last time a stream was created by this endpoint. Usually unset for
|
||
|
// servers.
|
||
|
google.protobuf.Timestamp last_local_stream_created_timestamp = 7;
|
||
|
// The last time a stream was created by the remote endpoint. Usually unset
|
||
|
// for clients.
|
||
|
google.protobuf.Timestamp last_remote_stream_created_timestamp = 8;
|
||
|
|
||
|
// The last time a message was sent by this endpoint.
|
||
|
google.protobuf.Timestamp last_message_sent_timestamp = 9;
|
||
|
// The last time a message was received by this endpoint.
|
||
|
google.protobuf.Timestamp last_message_received_timestamp = 10;
|
||
|
|
||
|
// The amount of window, granted to the local endpoint by the remote endpoint.
|
||
|
// This may be slightly out of date due to network latency. This does NOT
|
||
|
// include stream level or TCP level flow control info.
|
||
|
google.protobuf.Int64Value local_flow_control_window = 11;
|
||
|
|
||
|
// The amount of window, granted to the remote endpoint by the local endpoint.
|
||
|
// This may be slightly out of date due to network latency. This does NOT
|
||
|
// include stream level or TCP level flow control info.
|
||
|
google.protobuf.Int64Value remote_flow_control_window = 12;
|
||
|
|
||
|
// Socket options set on this socket. May be absent if 'summary' is set
|
||
|
// on GetSocketRequest.
|
||
|
repeated SocketOption option = 13;
|
||
|
}
|
||
|
|
||
|
// Address represents the address used to create the socket.
|
||
|
message Address {
|
||
|
message TcpIpAddress {
|
||
|
// Either the IPv4 or IPv6 address in bytes. Will be either 4 bytes or 16
|
||
|
// bytes in length.
|
||
|
bytes ip_address = 1;
|
||
|
// 0-64k, or -1 if not appropriate.
|
||
|
int32 port = 2;
|
||
|
}
|
||
|
// A Unix Domain Socket address.
|
||
|
message UdsAddress {
|
||
|
string filename = 1;
|
||
|
}
|
||
|
// An address type not included above.
|
||
|
message OtherAddress {
|
||
|
// The human readable version of the value. This value should be set.
|
||
|
string name = 1;
|
||
|
// The actual address message.
|
||
|
google.protobuf.Any value = 2;
|
||
|
}
|
||
|
|
||
|
oneof address {
|
||
|
TcpIpAddress tcpip_address = 1;
|
||
|
UdsAddress uds_address = 2;
|
||
|
OtherAddress other_address = 3;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Security represents details about how secure the socket is.
|
||
|
message Security {
|
||
|
message Tls {
|
||
|
oneof cipher_suite {
|
||
|
// The cipher suite name in the RFC 4346 format:
|
||
|
// https://tools.ietf.org/html/rfc4346#appendix-C
|
||
|
string standard_name = 1;
|
||
|
// Some other way to describe the cipher suite if
|
||
|
// the RFC 4346 name is not available.
|
||
|
string other_name = 2;
|
||
|
}
|
||
|
// the certificate used by this endpoint.
|
||
|
bytes local_certificate = 3;
|
||
|
// the certificate used by the remote endpoint.
|
||
|
bytes remote_certificate = 4;
|
||
|
}
|
||
|
message OtherSecurity {
|
||
|
// The human readable version of the value.
|
||
|
string name = 1;
|
||
|
// The actual security details message.
|
||
|
google.protobuf.Any value = 2;
|
||
|
}
|
||
|
oneof model {
|
||
|
Tls tls = 1;
|
||
|
OtherSecurity other = 2;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// SocketOption represents socket options for a socket. Specifically, these
|
||
|
// are the options returned by getsockopt().
|
||
|
message SocketOption {
|
||
|
// The full name of the socket option. Typically this will be the upper case
|
||
|
// name, such as "SO_REUSEPORT".
|
||
|
string name = 1;
|
||
|
// The human readable value of this socket option. At least one of value or
|
||
|
// additional will be set.
|
||
|
string value = 2;
|
||
|
// Additional data associated with the socket option. At least one of value
|
||
|
// or additional will be set.
|
||
|
google.protobuf.Any additional = 3;
|
||
|
}
|
||
|
|
||
|
// For use with SocketOption's additional field. This is primarily used for
|
||
|
// SO_RCVTIMEO and SO_SNDTIMEO
|
||
|
message SocketOptionTimeout {
|
||
|
google.protobuf.Duration duration = 1;
|
||
|
}
|
||
|
|
||
|
// For use with SocketOption's additional field. This is primarily used for
|
||
|
// SO_LINGER.
|
||
|
message SocketOptionLinger {
|
||
|
// active maps to `struct linger.l_onoff`
|
||
|
bool active = 1;
|
||
|
// duration maps to `struct linger.l_linger`
|
||
|
google.protobuf.Duration duration = 2;
|
||
|
}
|
||
|
|
||
|
// For use with SocketOption's additional field. Tcp info for
|
||
|
// SOL_TCP and TCP_INFO.
|
||
|
message SocketOptionTcpInfo {
|
||
|
uint32 tcpi_state = 1;
|
||
|
|
||
|
uint32 tcpi_ca_state = 2;
|
||
|
uint32 tcpi_retransmits = 3;
|
||
|
uint32 tcpi_probes = 4;
|
||
|
uint32 tcpi_backoff = 5;
|
||
|
uint32 tcpi_options = 6;
|
||
|
uint32 tcpi_snd_wscale = 7;
|
||
|
uint32 tcpi_rcv_wscale = 8;
|
||
|
|
||
|
uint32 tcpi_rto = 9;
|
||
|
uint32 tcpi_ato = 10;
|
||
|
uint32 tcpi_snd_mss = 11;
|
||
|
uint32 tcpi_rcv_mss = 12;
|
||
|
|
||
|
uint32 tcpi_unacked = 13;
|
||
|
uint32 tcpi_sacked = 14;
|
||
|
uint32 tcpi_lost = 15;
|
||
|
uint32 tcpi_retrans = 16;
|
||
|
uint32 tcpi_fackets = 17;
|
||
|
|
||
|
uint32 tcpi_last_data_sent = 18;
|
||
|
uint32 tcpi_last_ack_sent = 19;
|
||
|
uint32 tcpi_last_data_recv = 20;
|
||
|
uint32 tcpi_last_ack_recv = 21;
|
||
|
|
||
|
uint32 tcpi_pmtu = 22;
|
||
|
uint32 tcpi_rcv_ssthresh = 23;
|
||
|
uint32 tcpi_rtt = 24;
|
||
|
uint32 tcpi_rttvar = 25;
|
||
|
uint32 tcpi_snd_ssthresh = 26;
|
||
|
uint32 tcpi_snd_cwnd = 27;
|
||
|
uint32 tcpi_advmss = 28;
|
||
|
uint32 tcpi_reordering = 29;
|
||
|
}
|
||
|
|
||
|
// Channelz is a service exposed by gRPC servers that provides detailed debug
|
||
|
// information.
|
||
|
service Channelz {
|
||
|
// Gets all root channels (i.e. channels the application has directly
|
||
|
// created). This does not include subchannels nor non-top level channels.
|
||
|
rpc GetTopChannels(GetTopChannelsRequest) returns (GetTopChannelsResponse);
|
||
|
// Gets all servers that exist in the process.
|
||
|
rpc GetServers(GetServersRequest) returns (GetServersResponse);
|
||
|
// Returns a single Server, or else a NOT_FOUND code.
|
||
|
rpc GetServer(GetServerRequest) returns (GetServerResponse);
|
||
|
// Gets all server sockets that exist in the process.
|
||
|
rpc GetServerSockets(GetServerSocketsRequest) returns (GetServerSocketsResponse);
|
||
|
// Returns a single Channel, or else a NOT_FOUND code.
|
||
|
rpc GetChannel(GetChannelRequest) returns (GetChannelResponse);
|
||
|
// Returns a single Subchannel, or else a NOT_FOUND code.
|
||
|
rpc GetSubchannel(GetSubchannelRequest) returns (GetSubchannelResponse);
|
||
|
// Returns a single Socket or else a NOT_FOUND code.
|
||
|
rpc GetSocket(GetSocketRequest) returns (GetSocketResponse);
|
||
|
}
|
||
|
|
||
|
message GetTopChannelsRequest {
|
||
|
// start_channel_id indicates that only channels at or above this id should be
|
||
|
// included in the results.
|
||
|
// To request the first page, this should be set to 0. To request
|
||
|
// subsequent pages, the client generates this value by adding 1 to
|
||
|
// the highest seen result ID.
|
||
|
int64 start_channel_id = 1;
|
||
|
|
||
|
// If non-zero, the server will return a page of results containing
|
||
|
// at most this many items. If zero, the server will choose a
|
||
|
// reasonable page size. Must never be negative.
|
||
|
int64 max_results = 2;
|
||
|
}
|
||
|
|
||
|
message GetTopChannelsResponse {
|
||
|
// list of channels that the connection detail service knows about. Sorted in
|
||
|
// ascending channel_id order.
|
||
|
// Must contain at least 1 result, otherwise 'end' must be true.
|
||
|
repeated Channel channel = 1;
|
||
|
// If set, indicates that the list of channels is the final list. Requesting
|
||
|
// more channels can only return more if they are created after this RPC
|
||
|
// completes.
|
||
|
bool end = 2;
|
||
|
}
|
||
|
|
||
|
message GetServersRequest {
|
||
|
// start_server_id indicates that only servers at or above this id should be
|
||
|
// included in the results.
|
||
|
// To request the first page, this must be set to 0. To request
|
||
|
// subsequent pages, the client generates this value by adding 1 to
|
||
|
// the highest seen result ID.
|
||
|
int64 start_server_id = 1;
|
||
|
|
||
|
// If non-zero, the server will return a page of results containing
|
||
|
// at most this many items. If zero, the server will choose a
|
||
|
// reasonable page size. Must never be negative.
|
||
|
int64 max_results = 2;
|
||
|
}
|
||
|
|
||
|
message GetServersResponse {
|
||
|
// list of servers that the connection detail service knows about. Sorted in
|
||
|
// ascending server_id order.
|
||
|
// Must contain at least 1 result, otherwise 'end' must be true.
|
||
|
repeated Server server = 1;
|
||
|
// If set, indicates that the list of servers is the final list. Requesting
|
||
|
// more servers will only return more if they are created after this RPC
|
||
|
// completes.
|
||
|
bool end = 2;
|
||
|
}
|
||
|
|
||
|
message GetServerRequest {
|
||
|
// server_id is the identifier of the specific server to get.
|
||
|
int64 server_id = 1;
|
||
|
}
|
||
|
|
||
|
message GetServerResponse {
|
||
|
// The Server that corresponds to the requested server_id. This field
|
||
|
// should be set.
|
||
|
Server server = 1;
|
||
|
}
|
||
|
|
||
|
message GetServerSocketsRequest {
|
||
|
int64 server_id = 1;
|
||
|
// start_socket_id indicates that only sockets at or above this id should be
|
||
|
// included in the results.
|
||
|
// To request the first page, this must be set to 0. To request
|
||
|
// subsequent pages, the client generates this value by adding 1 to
|
||
|
// the highest seen result ID.
|
||
|
int64 start_socket_id = 2;
|
||
|
|
||
|
// If non-zero, the server will return a page of results containing
|
||
|
// at most this many items. If zero, the server will choose a
|
||
|
// reasonable page size. Must never be negative.
|
||
|
int64 max_results = 3;
|
||
|
}
|
||
|
|
||
|
message GetServerSocketsResponse {
|
||
|
// list of socket refs that the connection detail service knows about. Sorted in
|
||
|
// ascending socket_id order.
|
||
|
// Must contain at least 1 result, otherwise 'end' must be true.
|
||
|
repeated SocketRef socket_ref = 1;
|
||
|
// If set, indicates that the list of sockets is the final list. Requesting
|
||
|
// more sockets will only return more if they are created after this RPC
|
||
|
// completes.
|
||
|
bool end = 2;
|
||
|
}
|
||
|
|
||
|
message GetChannelRequest {
|
||
|
// channel_id is the identifier of the specific channel to get.
|
||
|
int64 channel_id = 1;
|
||
|
}
|
||
|
|
||
|
message GetChannelResponse {
|
||
|
// The Channel that corresponds to the requested channel_id. This field
|
||
|
// should be set.
|
||
|
Channel channel = 1;
|
||
|
}
|
||
|
|
||
|
message GetSubchannelRequest {
|
||
|
// subchannel_id is the identifier of the specific subchannel to get.
|
||
|
int64 subchannel_id = 1;
|
||
|
}
|
||
|
|
||
|
message GetSubchannelResponse {
|
||
|
// The Subchannel that corresponds to the requested subchannel_id. This
|
||
|
// field should be set.
|
||
|
Subchannel subchannel = 1;
|
||
|
}
|
||
|
|
||
|
message GetSocketRequest {
|
||
|
// socket_id is the identifier of the specific socket to get.
|
||
|
int64 socket_id = 1;
|
||
|
|
||
|
// If true, the response will contain only high level information
|
||
|
// that is inexpensive to obtain. Fields thay may be omitted are
|
||
|
// documented.
|
||
|
bool summary = 2;
|
||
|
}
|
||
|
|
||
|
message GetSocketResponse {
|
||
|
// The Socket that corresponds to the requested socket_id. This field
|
||
|
// should be set.
|
||
|
Socket socket = 1;
|
||
|
}
|