Loading...
Searching...
No Matches
pre_very_consensus_service_pbft.h
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19
20#pragma once
21
22#include "platform/consensus/ordering/pbft/consensus_service_pbft.h"
23
24namespace resdb {
25
26template <typename RequestType>
27class PreVerifyConsensusServicePBFT : public ConsensusServicePBFT {
28 public:
30 const ResDBConfig& config,
31 std::unique_ptr<TransactionExecutorImpl> executor)
32 : ConsensusServicePBFT(config, std::move(executor)) {
34 }
35 virtual ~PreVerifyConsensusServicePBFT() = default;
36
37 void SetPreVerifyFunc();
38
39 virtual bool VerifyClientRequest(const RequestType& request) = 0;
40};
41
42template <typename RequestType>
44 ConsensusServicePBFT::SetPreVerifyFunc([&](const Request& request) {
45 RequestType user_request;
46 if (!user_request.ParseFromString(request.data())) {
47 LOG(ERROR) << "parse data fail";
48 return false;
49 }
50
51 return VerifyClientRequest(user_request);
52 });
53}
54
55} // namespace resdb
virtual ~PreVerifyConsensusServicePBFT()=default
virtual bool VerifyClientRequest(const RequestType &request)=0
PreVerifyConsensusServicePBFT(const ResDBConfig &config, std::unique_ptr< TransactionExecutorImpl > executor)