platform/proto/resdb.proto (183 lines of code) (raw):
/*
* 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";
import "platform/proto/replica_info.proto";
import "common/proto/signature_info.proto";
package resdb;
// Network message used to deliver Requests between replicas and client.
message ResDBMessage {
bytes data = 1;
SignatureInfo signature = 2;
}
message Certs {
repeated SignatureInfo committed_certs= 1;
}
// The request message containing requested numbers
message Request {
enum Type {
TYPE_NONE = 0;
TYPE_HEART_BEAT = 1;
TYPE_CLIENT_REQUEST = 2;
TYPE_PRE_PREPARE = 3;
TYPE_PREPARE = 4;
TYPE_COMMIT = 5;
TYPE_CLIENT_CERT = 6;
TYPE_RESPONSE = 7;
TYPE_RECOVERY_DATA = 8;
TYPE_RECOVERY_DATA_RESP = 9;
TYPE_CHECKPOINT = 10;
TYPE_QUERY = 11;
TYPE_REPLICA_STATE = 12; // get replica state.
TYPE_NEW_TXNS = 14; // new transactions sent by proxy,
//with batch transactions.
TYPE_GEO_REQUEST = 15;
TYPE_VIEWCHANGE = 16;
TYPE_NEWVIEW= 17;
TYPE_CUSTOM_QUERY = 18;
TYPE_CUSTOM_CONSENSUS = 19;
NUM_OF_TYPE = 20; // the total number of types.
// Used to create the collector.
};
int32 type = 1;
bytes data = 2;
ReplicaInfo client_info = 3;
uint64 current_view = 4;
uint64 seq = 5;
bytes hash = 6;
int32 sender_id = 7;
int64 proxy_id = 8; // the replica which receives the client request.
bool is_system_request = 9; // whether is system information related
// request, like CMD:ADDREPLICA.
uint64 current_executed_seq = 10;
bool need_response = 11;
int32 ret = 12;
optional SignatureInfo data_signature = 13;
RegionInfo region_info = 14;
Certs committed_certs= 15;
bool is_recovery = 16;
int32 primary_id = 17;
repeated bytes hashs = 18;
repeated uint64 seqs = 19;
int32 user_type = 20;
int64 user_seq = 21;
int64 queuing_time = 22;
int64 uid = 23;
int64 create_time = 24;
int64 commit_time = 25;
bytes data_hash = 26;
}
// The response message containing response
message ResponseData {
bytes data = 1;
SignatureInfo signature = 2; // signature for each resp.
}
message Response {
enum Result {
OK = 0;
ERROR = -1;
};
Result result = 1;
repeated ResponseData resp = 2; // signature for each resp.
}
message BatchUserRequest {
message UserRequest {
Request request = 1;
SignatureInfo signature = 2;
int32 id = 3;
};
repeated UserRequest user_requests = 1;
uint64 createtime = 2;
uint64 local_id = 3;
uint64 seq = 4;
Certs committed_certs= 5;
bytes hash = 6;
int32 proxy_id = 7;
}
message BatchUserResponse {
repeated bytes response = 1;
repeated SignatureInfo signatures = 2;
int32 proxy_id = 3;
uint64 seq = 4;
uint64 current_view = 5;
uint64 createtime = 6;
uint64 local_id = 7;
bytes hash = 8;
int32 primary_id = 9;
}
message HeartBeatInfo{
repeated CertificateKey public_keys = 1;
repeated int64 node_version = 8;
uint32 primary = 2;
uint64 version= 3;
int32 sender = 4;
string ip = 5;
int32 port = 6;
int64 hb_version = 7;
}
message ClientCertInfo {
CertificateKey public_key = 1;
ReplicaInfo client_info = 2;
}
message ClientCertResponse {
repeated CertificateKey public_keys = 1;
repeated ReplicaInfo replicas = 2;
}
message NewReplicaRequest {
ReplicaInfo replica_info = 1;
}
message SystemInfoRequest {
enum Type {
NONE = 0;
ADD_REPLICA = 1;
};
Type type = 1;
bytes request = 2;
}
message RecoveryRequest {
uint64 min_seq = 1;
uint64 max_seq = 2;
}
message RecoveryResponse {
repeated Request request = 1;
}
message RequestWithProof {
message RequestData {
Request request = 1;
SignatureInfo signature = 2;
};
// The committed request.
Request request = 1;
// proof from distinct replicas.
repeated RequestData proofs = 2;
uint64 seq = 3;
}
message RequestSet {
repeated RequestWithProof requests = 1;
}
message QueryRequest {
uint64 min_seq = 1;
uint64 max_seq = 2;
}
message QueryResponse {
repeated Request transactions = 1;
uint64 max_seq = 2;
}
message CustomQueryResponse {
bytes resp_str = 1;
}