grpc 第三方依赖 就是grpc的 third_party 文件夹
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

215 lines
5.6 KiB

// Copyright 2021 Google LLC
//
// 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.
syntax = "proto3";
package google.cloud.apigeeconnect.v1;
import "google/protobuf/duration.proto";
import "google/rpc/status.proto";
import "google/api/client.proto";
option csharp_namespace = "Google.Cloud.ApigeeConnect.V1";
option go_package = "google.golang.org/genproto/googleapis/cloud/apigeeconnect/v1;apigeeconnect";
option java_multiple_files = true;
option java_outer_classname = "TetherProto";
option java_package = "com.google.cloud.apigeeconnect.v1";
option php_namespace = "Google\\Cloud\\ApigeeConnect\\V1";
option ruby_package = "Google::Cloud::ApigeeConnect::V1";
// Tether provides a way for the control plane to send HTTP API requests to
// services in data planes that runs in a remote datacenter without
// requiring customers to open firewalls on their runtime plane.
service Tether {
option (google.api.default_host) = "apigeeconnect.googleapis.com";
option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
// Egress streams egress requests and responses. Logically, this is not
// actually a streaming request, but uses streaming as a mechanism to flip
// the client-server relationship of gRPC so that the server can act as a
// client.
// The listener, the RPC server, accepts connections from the dialer,
// the RPC client.
// The listener streams http requests and the dialer streams http responses.
rpc Egress(stream EgressResponse) returns (stream EgressRequest) {
}
}
// gRPC request payload for tether.
message EgressRequest {
// Unique identifier for the request.
string id = 1;
// Actual payload to send to agent.
Payload payload = 2;
// Tether Endpoint.
TetherEndpoint endpoint = 3;
// GCP Project.
// Format: `projects/{project_number}`.
string project = 4;
// Unique identifier for clients to trace their request/response.
string trace_id = 5;
// Timeout for the HTTP request.
google.protobuf.Duration timeout = 6;
}
// Payload for EgressRequest.
message Payload {
// The kind of payload.
oneof kind {
// The HttpRequest proto.
HttpRequest http_request = 1;
// The information of stream.
StreamInfo stream_info = 2;
// The action taken by agent.
Action action = 3;
}
}
// The Information of bi-directional stream.
message StreamInfo {
// Unique identifier for the stream.
string id = 1;
}
// The action taken by agent.
enum Action {
// Unspecified Action.
ACTION_UNSPECIFIED = 0;
// Indicates that agent should open a new stream.
OPEN_NEW_STREAM = 1;
}
// gRPC response payload for tether.
message EgressResponse {
// Unique identifier for the response. Matches the EgressRequest's id.
string id = 1;
// HttpResponse.
HttpResponse http_response = 2;
// Errors from application when handling the http request.
google.rpc.Status status = 3;
// GCP Project.
// Format: `projects/{project_number}`.
string project = 4;
// Unique identifier for clients to trace their request/response. Matches the
// EgressRequest's trace id
string trace_id = 5;
// Tether Endpoint.
TetherEndpoint endpoint = 6;
// Name is the full resource path of endpoint.
// Format: `projects/{project_number or project_id}/endpoints/{endpoint}`
string name = 7;
}
// Endpoint indicates where the messages will be delivered.
enum TetherEndpoint {
// Unspecified tether endpoint.
TETHER_ENDPOINT_UNSPECIFIED = 0;
// Apigee MART endpoint.
APIGEE_MART = 1;
// Apigee Runtime endpoint.
APIGEE_RUNTIME = 2;
// Apigee Mint Rating endpoint.
APIGEE_MINT_RATING = 3;
}
// HTTP Scheme.
enum Scheme {
// Unspecified scheme.
SCHEME_UNSPECIFIED = 0;
// HTTPS protocol.
HTTPS = 1;
}
// The proto definition of http request.
message HttpRequest {
// A unique identifier for the request.
string id = 1;
// The HTTP request method.
// Valid methods: "GET", "HEAD", "POST", "PUT", "PATCH","DELETE".
string method = 2;
// The HTTP request URL.
Url url = 3;
// The HTTP request headers.
repeated Header headers = 4;
// HTTP request body.
bytes body = 5;
}
// The proto definition of url.
// A url represents a URL and the general form represented is:
//
// `[scheme://][google.cloud.apigeeconnect.v1.Url.host][path]`
message Url {
// Scheme.
Scheme scheme = 1;
// Host or Host:Port.
string host = 2;
// Path starts with `/`.
string path = 3;
}
// The http headers.
message Header {
string key = 1;
repeated string values = 2;
}
// The proto definition of http response.
message HttpResponse {
// A unique identifier that matches the request ID.
string id = 1;
// Status of http response, e.g. "200 OK".
string status = 2;
// Status code of http response, e.g. 200.
int32 status_code = 3;
// The HTTP 1.1 response body.
bytes body = 4;
// The HTTP response headers.
repeated Header headers = 5;
// Content length records the length of the associated content. The
// value -1 indicates that the length is unknown. Unless http method
// is "HEAD", values >= 0 indicate that the given number of bytes may
// be read from Body.
int64 content_length = 6;
}