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; }