30#include "platform/proto/viewchange_message.pb.h"
40 uint64_t timeout_length_)
64 std::shared_ptr<ViewChangeTimeout>
SetComplaining(std::string hash,
90 std::unique_ptr<Request> request);
92 std::unique_ptr<Request> request);
111 void SendViewChangeMsg();
112 void SendNewViewMsg(uint64_t view_number);
113 bool IsValidViewChangeMsg(
const ViewChangeMessage& view_change_message);
114 uint32_t AddRequest(
const ViewChangeMessage& viewchange_message,
116 bool IsNextPrimary(uint64_t view_number);
117 void SetCurrentViewAndNewPrimary(uint64_t view_number);
118 std::vector<std::unique_ptr<Request>> GetPrepareMsg(
119 const NewViewMessage& new_view_message,
bool need_sign =
true);
123 void MonitoringViewChangeTimeOut();
125 void MonitoringCheckpointState();
148 std::map<uint64_t, std::priority_queue<std::shared_ptr<ViewChangeTimeout>>>
void EraseViewChangeTimeout(std::string hash)
uint CountViewChangeTimeout(std::string hash)
std::shared_ptr< ViewChangeTimeout > SetComplaining(std::string hash, uint64_t view)
void set_proxy_id(uint64_t proxy_id)
std::set< std::string > viewchange_timeout_set
void ReleaseComplaining(std::string hash)
std::mutex complain_state_lock
int ProcessViewChange(std::unique_ptr< Context > context, std::unique_ptr< Request > request)
DuplicateManager * duplicate_manager_
std::map< uint64_t, std::map< uint32_t, ViewChangeMessage > > viewchange_request_
std::thread monitor_thread_
int ProcessNewView(std::unique_ptr< Context > context, std::unique_ptr< Request > request)
std::atomic< bool > stop_
MessageManager * message_manager_
SystemInfo * system_info_
std::map< uint64_t, std::priority_queue< std::shared_ptr< ViewChangeTimeout > > > viewchange_timeout_min_heap_
SignatureVerifier * verifier_
virtual ~ViewChangeManager()
uint32_t view_change_counter_
std::atomic< bool > started_
std::map< uint64_t, ComplaningClients > complaining_clients_
ReplicaCommunicator * replica_communicator_
sem_t viewchange_timer_signal_
std::thread checkpoint_state_thread_
void SetDuplicateManager(DuplicateManager *manager)
LockFreeCollectorPool * collector_pool_
CheckPointManager * checkpoint_manager_
void CheckComplaintTimeout()
void AddComplaintTimer(uint64_t proxy_id, std::string hash)
void AddViewChangeTimer()
std::thread server_checking_timeout_thread_
bool operator<(const ViewChangeTimeout &other) const
ViewChangeTimeout(ViewChangeTimerType type, uint64_t view, uint64_t proxy_id, std::string hash, uint64_t start_time, uint64_t timeout_length_)