blob: 43c9377d244f05062d9ff96cb2685627ba44e454 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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";
option java_package = "org.apache.ratis.proto.rmap";
option java_outer_classname = "RMapProtos";
option java_generate_equals_and_hash = true;
package ratis.rmap;
// TODO: This .proto file should go to the ratis-replicated-map module, but we need it here
// due to shading.
// Metadata about a replicated map
message RMapInfo {
int64 rmap_id = 1;
string name = 2;
string key_class = 3;
string value_class = 4;
string key_serde_class = 5;
string value_serde_class = 6;
string key_comparator_class = 7;
}
// An entry in a replicated map.`
message Entry {
bytes key = 1;
bytes value = 2;
}
// TODO: raft client should allow a Service decleration, and calling a method from the service
// similar to how coprocessor calls work in HBase.
message Request {
oneof RequestType {
MultiActionRequest multi_action_request = 1;
ScanRequest scan_request = 2;
CreateRMapRequest create_rmap_request = 3;
DeleteRMapRequest delete_rmap_request = 4;
ListRMapInfosRequest list_rmap_infos_request = 5;
}
}
message Response {
ExceptionResponse exception = 1;
oneof ResponseType {
MultiActionResponse multi_action_response = 2;
ScanResponse scan_response = 3;
CreateRMapResponse create_rmap_response = 4;
DeleteRMapResponse delete_rmap_response = 5;
ListRMapInfosResponse list_rmap_infos_response = 6;
}
}
message MultiActionRequest {
int64 rmap_id = 1;
repeated Action action = 2;
}
message Action {
oneof ActionType {
GetRequest get_request = 1;
PutRequest put_request = 2;
}
}
message ActionResponse {
oneof ActionType {
GetResponse get_response = 1;
PutResponse put_response = 2;
}
}
message MultiActionResponse {
repeated ActionResponse action_response = 1;
}
message CreateRMapRequest {
RMapInfo rmap_info = 1;
}
message CreateRMapResponse {
RMapInfo rmap_info = 1;
}
message DeleteRMapRequest {
int64 rmap_id = 1;
}
message DeleteRMapResponse {
}
message ListRMapInfosRequest {
oneof ListRMapInfosType {
// if set, we only care about a particular RMapInfo
int64 rmap_id = 1;
// only return infos whose names match this pattern
string name_pattern = 2;
}
}
message ListRMapInfosResponse {
repeated RMapInfo rmap_info = 1;
}
message GetRequest {
bytes key = 1;
}
message GetResponse {
bool found = 1;
bytes key = 2;
bytes value = 3;
}
message PutRequest {
bytes key = 1;
bytes value = 2;
}
message PutResponse {
}
message Scan {
bytes start_Key = 1;
bytes end_key = 2;
bool start_key_inclusive = 3;
bool end_key_inclusive = 4;
bool keys_only = 5;
int32 limit = 6;
}
message ScanRequest {
int64 rmap_id = 1;
Scan scan = 2;
}
message ScanResponse {
repeated Entry entry = 1;
}
message ExceptionResponse {
// Class name of the exception thrown from the server
string exception_class_name = 1;
// Exception stack trace from the server side
string stack_trace = 2;
// Optional hostname. Filled in for some exceptions such as region moved
// where exception gives clue on where the region may have moved.
string hostname = 3;
int32 port = 4;
// Set if we are NOT to retry on receipt of this exception
bool do_not_retry = 5;
}
message Id {
int64 id = 1;
}
message WALEntry {
int64 rmap_id = 1; // these are shared by all WALEntry types
repeated Entry entry = 2;
oneof WALEntryType {
// Multi is not here, because we do not want to create one more object unnecessarily
CreateRMapWALEntry create_rmap_entry = 3;
DeleteRMapWALEntry delete_rmap_entry = 4;
}
}
message CreateRMapWALEntry {
RMapInfo rmap_info = 1;
Id id = 2;
}
message DeleteRMapWALEntry {
int64 id = 1;
}