175 lines
5.8 KiB
Protocol Buffer
175 lines
5.8 KiB
Protocol Buffer
// Copyright 2020 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.pubsublite.v1;
|
|
|
|
import "google/api/annotations.proto";
|
|
import "google/api/client.proto";
|
|
import "google/api/field_behavior.proto";
|
|
import "google/api/resource.proto";
|
|
import "google/cloud/pubsublite/v1/common.proto";
|
|
|
|
option cc_enable_arenas = true;
|
|
option csharp_namespace = "Google.Cloud.PubSubLite.V1";
|
|
option go_package = "google.golang.org/genproto/googleapis/cloud/pubsublite/v1;pubsublite";
|
|
option java_multiple_files = true;
|
|
option java_outer_classname = "CursorProto";
|
|
option java_package = "com.google.cloud.pubsublite.proto";
|
|
option php_namespace = "Google\\Cloud\\PubSubLite\\V1";
|
|
option ruby_package = "Google::Cloud::PubSubLite::V1";
|
|
|
|
// The service that a subscriber client application uses to manage committed
|
|
// cursors while receiving messsages. A cursor represents a subscriber's
|
|
// progress within a topic partition for a given subscription.
|
|
service CursorService {
|
|
option (google.api.default_host) = "pubsublite.googleapis.com";
|
|
option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
|
|
|
|
// Establishes a stream with the server for managing committed cursors.
|
|
rpc StreamingCommitCursor(stream StreamingCommitCursorRequest) returns (stream StreamingCommitCursorResponse) {
|
|
}
|
|
|
|
// Updates the committed cursor.
|
|
rpc CommitCursor(CommitCursorRequest) returns (CommitCursorResponse) {
|
|
}
|
|
|
|
// Returns all committed cursor information for a subscription.
|
|
rpc ListPartitionCursors(ListPartitionCursorsRequest) returns (ListPartitionCursorsResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/cursor/{parent=projects/*/locations/*/subscriptions/*}/cursors"
|
|
};
|
|
option (google.api.method_signature) = "parent";
|
|
}
|
|
}
|
|
|
|
// The first streaming request that must be sent on a newly-opened stream. The
|
|
// client must wait for the response before sending subsequent requests on the
|
|
// stream.
|
|
message InitialCommitCursorRequest {
|
|
// The subscription for which to manage committed cursors.
|
|
string subscription = 1;
|
|
|
|
// The partition for which to manage committed cursors. Partitions are zero
|
|
// indexed, so `partition` must be in the range [0, topic.num_partitions).
|
|
int64 partition = 2;
|
|
}
|
|
|
|
// Response to an InitialCommitCursorRequest.
|
|
message InitialCommitCursorResponse {
|
|
|
|
}
|
|
|
|
// Streaming request to update the committed cursor. Subsequent
|
|
// SequencedCommitCursorRequests override outstanding ones.
|
|
message SequencedCommitCursorRequest {
|
|
// The new value for the committed cursor.
|
|
Cursor cursor = 1;
|
|
}
|
|
|
|
// Response to a SequencedCommitCursorRequest.
|
|
message SequencedCommitCursorResponse {
|
|
// The number of outstanding SequencedCommitCursorRequests acknowledged by
|
|
// this response. Note that SequencedCommitCursorRequests are acknowledged in
|
|
// the order that they are received.
|
|
int64 acknowledged_commits = 1;
|
|
}
|
|
|
|
// A request sent from the client to the server on a stream.
|
|
message StreamingCommitCursorRequest {
|
|
// The type of request this is.
|
|
oneof request {
|
|
// Initial request on the stream.
|
|
InitialCommitCursorRequest initial = 1;
|
|
|
|
// Request to commit a new cursor value.
|
|
SequencedCommitCursorRequest commit = 2;
|
|
}
|
|
}
|
|
|
|
// Response to a StreamingCommitCursorRequest.
|
|
message StreamingCommitCursorResponse {
|
|
// The type of request this is.
|
|
oneof request {
|
|
// Initial response on the stream.
|
|
InitialCommitCursorResponse initial = 1;
|
|
|
|
// Response to committing a new cursor value.
|
|
SequencedCommitCursorResponse commit = 2;
|
|
}
|
|
}
|
|
|
|
// Request for CommitCursor.
|
|
message CommitCursorRequest {
|
|
// The subscription for which to update the cursor.
|
|
string subscription = 1;
|
|
|
|
// The partition for which to update the cursor. Partitions are zero indexed,
|
|
// so `partition` must be in the range [0, topic.num_partitions).
|
|
int64 partition = 2;
|
|
|
|
// The new value for the committed cursor.
|
|
Cursor cursor = 3;
|
|
}
|
|
|
|
// Response for CommitCursor.
|
|
message CommitCursorResponse {
|
|
|
|
}
|
|
|
|
// Request for ListPartitionCursors.
|
|
message ListPartitionCursorsRequest {
|
|
// Required. The subscription for which to retrieve cursors.
|
|
// Structured like
|
|
// `projects/{project_number}/locations/{location}/subscriptions/{subscription_id}`.
|
|
string parent = 1 [
|
|
(google.api.field_behavior) = REQUIRED,
|
|
(google.api.resource_reference) = {
|
|
type: "pubsublite.googleapis.com/Subscription"
|
|
}
|
|
];
|
|
|
|
// The maximum number of cursors to return. The service may return fewer than
|
|
// this value.
|
|
// If unset or zero, all cursors for the parent will be returned.
|
|
int32 page_size = 2;
|
|
|
|
// A page token, received from a previous `ListPartitionCursors` call.
|
|
// Provide this to retrieve the subsequent page.
|
|
//
|
|
// When paginating, all other parameters provided to `ListPartitionCursors`
|
|
// must match the call that provided the page token.
|
|
string page_token = 3;
|
|
}
|
|
|
|
// A pair of a Cursor and the partition it is for.
|
|
message PartitionCursor {
|
|
// The partition this is for.
|
|
int64 partition = 1;
|
|
|
|
// The value of the cursor.
|
|
Cursor cursor = 2;
|
|
}
|
|
|
|
// Response for ListPartitionCursors
|
|
message ListPartitionCursorsResponse {
|
|
// The partition cursors from this request.
|
|
repeated PartitionCursor partition_cursors = 1;
|
|
|
|
// A token, which can be sent as `page_token` to retrieve the next page.
|
|
// If this field is omitted, there are no subsequent pages.
|
|
string next_page_token = 2;
|
|
}
|