56 std::unique_ptr<Request> request);
57 void SetDataFunc(std::function<std::string()> func);
63 const SignatureInfo& signature, std::unique_ptr<Request> request,
64 std::function<
void(
const Request&,
67 void SendResponseToClient(
const BatchUserResponse& batch_response);
70 std::unique_ptr<Context> context;
71 std::unique_ptr<Request> user_request;
73 bool MayConsensusChangeStatus(
int type,
int received_count,
74 std::atomic<TransactionStatue>* status);
75 int DoBatch(
const std::vector<std::unique_ptr<QueueItem>>& batch_req);
76 int BatchProposeMsg();
78 std::unique_ptr<Request> GenerateUserRequest();
80 void AddWaitingResponseRequest(std::unique_ptr<Request> request);
81 void RemoveWaitingResponseRequest(std::string hash);
82 bool CheckTimeOut(std::string hash);
83 void ResponseTimer(std::string hash);
84 void MonitoringClientTimeOut();
85 std::unique_ptr<Request> GetTimeOutRequest(std::string hash);
90 std::unique_ptr<LockFreeCollectorPool> collector_pool_, context_pool_;
92 std::thread user_req_thread_[16];
93 std::atomic<bool> stop_;
94 uint64_t local_id_ = 0;
96 std::vector<int> send_num_;
98 std::atomic<int> total_num_;
102 std::function<std::string()> data_func_;
103 std::future<bool> eval_ready_future_;
104 std::promise<bool> eval_ready_promise_;
105 std::atomic<bool> eval_started_;
106 std::atomic<int> fail_num_;
108 std::thread checking_timeout_thread_;
109 std::map<std::string, std::unique_ptr<Request>> waiting_response_batches_;
110 std::priority_queue<PerformanceClientTimeout> client_timeout_min_heap_;
112 uint64_t timeout_length_;
113 sem_t request_sent_signal_;
114 uint64_t highest_seq_;
115 uint64_t highest_seq_primary_id_;