Loading...
Searching...
No Matches
resdb::ViewChangeManager Class Reference

#include <viewchange_manager.h>

Public Types

enum  ViewChangeStatus { NONE = 0 , READY_VIEW_CHANGE = 1 , READY_NEW_VIEW = 2 , VIEW_CHANGE_FAIL = 3 }
 

Public Member Functions

 ViewChangeManager (const ResDBConfig &config, CheckPointManager *checkpoint_manager, MessageManager *message_manager, SystemInfo *system_info, ReplicaCommunicator *replica_communicator, SignatureVerifier *verifier)
 
virtual ~ViewChangeManager ()
 
int ProcessViewChange (std::unique_ptr< Context > context, std::unique_ptr< Request > request)
 
int ProcessNewView (std::unique_ptr< Context > context, std::unique_ptr< Request > request)
 
bool IsInViewChange ()
 
void MayStart ()
 
void AddComplaintTimer (uint64_t proxy_id, std::string hash)
 
void AddViewChangeTimer ()
 
void AddNewViewTimer ()
 
void CheckComplaintTimeout ()
 
void SetDuplicateManager (DuplicateManager *manager)
 

Protected Attributes

ResDBConfig config_
 
CheckPointManager * checkpoint_manager_
 
MessageManager * message_manager_
 
SystemInfo * system_info_
 
ReplicaCommunicator * replica_communicator_
 
SignatureVerifier * verifier_
 
std::thread monitor_thread_
 
std::map< uint64_t, std::map< uint32_t, ViewChangeMessage > > viewchange_request_
 
std::mutex mutex_
 
std::mutex status_mutex_
 
bool new_view_is_sent_ = false
 
ViewChangeStatus status_
 
std::atomic< bool > started_
 
uint32_t view_change_counter_
 
std::mutex vc_mutex_
 
std::thread server_checking_timeout_thread_
 
std::thread checkpoint_state_thread_
 
sem_t timeout_cnt_
 
sem_t viewchange_timer_signal_
 
std::map< uint64_t, std::priority_queue< std::shared_ptr< ViewChangeTimeout > > > viewchange_timeout_min_heap_
 
std::map< uint64_t, ComplaningClients > complaining_clients_
 
std::atomic< bool > stop_
 
uint64_t timeout_length_ = 10000000
 
LockFreeCollectorPool * collector_pool_
 
DuplicateManager * duplicate_manager_
 

Detailed Description

Definition at line 80 of file viewchange_manager.h.

Member Enumeration Documentation

◆ ViewChangeStatus

Enumerator
NONE 
READY_VIEW_CHANGE 
READY_NEW_VIEW 
VIEW_CHANGE_FAIL 

Definition at line 97 of file viewchange_manager.h.

Constructor & Destructor Documentation

◆ ViewChangeManager()

resdb::ViewChangeManager::ViewChangeManager ( const ResDBConfig &  config,
CheckPointManager *  checkpoint_manager,
MessageManager *  message_manager,
SystemInfo *  system_info,
ReplicaCommunicator *  replica_communicator,
SignatureVerifier *  verifier 
)

Definition at line 70 of file viewchange_manager.cpp.

◆ ~ViewChangeManager()

resdb::ViewChangeManager::~ViewChangeManager ( )
virtual

Definition at line 96 of file viewchange_manager.cpp.

Member Function Documentation

◆ AddComplaintTimer()

void resdb::ViewChangeManager::AddComplaintTimer ( uint64_t  proxy_id,
std::string  hash 
)

Definition at line 506 of file viewchange_manager.cpp.

◆ AddNewViewTimer()

void resdb::ViewChangeManager::AddNewViewTimer ( )

◆ AddViewChangeTimer()

void resdb::ViewChangeManager::AddViewChangeTimer ( )

◆ CheckComplaintTimeout()

void resdb::ViewChangeManager::CheckComplaintTimeout ( )

◆ IsInViewChange()

bool resdb::ViewChangeManager::IsInViewChange ( )

Definition at line 158 of file viewchange_manager.cpp.

◆ MayStart()

void resdb::ViewChangeManager::MayStart ( )

Definition at line 106 of file viewchange_manager.cpp.

◆ ProcessNewView()

int resdb::ViewChangeManager::ProcessNewView ( std::unique_ptr< Context >  context,
std::unique_ptr< Request >  request 
)

Definition at line 285 of file viewchange_manager.cpp.

◆ ProcessViewChange()

int resdb::ViewChangeManager::ProcessViewChange ( std::unique_ptr< Context >  context,
std::unique_ptr< Request >  request 
)

Definition at line 375 of file viewchange_manager.cpp.

◆ SetDuplicateManager()

void resdb::ViewChangeManager::SetDuplicateManager ( DuplicateManager *  manager)

Definition at line 608 of file viewchange_manager.cpp.

Member Data Documentation

◆ checkpoint_manager_

CheckPointManager* resdb::ViewChangeManager::checkpoint_manager_
protected

Definition at line 129 of file viewchange_manager.h.

◆ checkpoint_state_thread_

std::thread resdb::ViewChangeManager::checkpoint_state_thread_
protected

Definition at line 144 of file viewchange_manager.h.

◆ collector_pool_

LockFreeCollectorPool* resdb::ViewChangeManager::collector_pool_
protected

Definition at line 154 of file viewchange_manager.h.

◆ complaining_clients_

std::map<uint64_t, ComplaningClients> resdb::ViewChangeManager::complaining_clients_
protected

Definition at line 150 of file viewchange_manager.h.

◆ config_

ResDBConfig resdb::ViewChangeManager::config_
protected

Definition at line 128 of file viewchange_manager.h.

◆ duplicate_manager_

DuplicateManager* resdb::ViewChangeManager::duplicate_manager_
protected

Definition at line 155 of file viewchange_manager.h.

◆ message_manager_

MessageManager* resdb::ViewChangeManager::message_manager_
protected

Definition at line 130 of file viewchange_manager.h.

◆ monitor_thread_

std::thread resdb::ViewChangeManager::monitor_thread_
protected

Definition at line 134 of file viewchange_manager.h.

◆ mutex_

std::mutex resdb::ViewChangeManager::mutex_
protected

Definition at line 136 of file viewchange_manager.h.

◆ new_view_is_sent_

bool resdb::ViewChangeManager::new_view_is_sent_ = false
protected

Definition at line 137 of file viewchange_manager.h.

◆ replica_communicator_

ReplicaCommunicator* resdb::ViewChangeManager::replica_communicator_
protected

Definition at line 132 of file viewchange_manager.h.

◆ server_checking_timeout_thread_

std::thread resdb::ViewChangeManager::server_checking_timeout_thread_
protected

Definition at line 143 of file viewchange_manager.h.

◆ started_

std::atomic<bool> resdb::ViewChangeManager::started_
protected

Definition at line 139 of file viewchange_manager.h.

◆ status_

ViewChangeStatus resdb::ViewChangeManager::status_
protected

Definition at line 138 of file viewchange_manager.h.

◆ status_mutex_

std::mutex resdb::ViewChangeManager::status_mutex_
protected

Definition at line 136 of file viewchange_manager.h.

◆ stop_

std::atomic<bool> resdb::ViewChangeManager::stop_
protected

Definition at line 151 of file viewchange_manager.h.

◆ system_info_

SystemInfo* resdb::ViewChangeManager::system_info_
protected

Definition at line 131 of file viewchange_manager.h.

◆ timeout_cnt_

sem_t resdb::ViewChangeManager::timeout_cnt_
protected

Definition at line 145 of file viewchange_manager.h.

◆ timeout_length_

uint64_t resdb::ViewChangeManager::timeout_length_ = 10000000
protected

Definition at line 152 of file viewchange_manager.h.

◆ vc_mutex_

std::mutex resdb::ViewChangeManager::vc_mutex_
protected

Definition at line 142 of file viewchange_manager.h.

◆ verifier_

SignatureVerifier* resdb::ViewChangeManager::verifier_
protected

Definition at line 133 of file viewchange_manager.h.

◆ view_change_counter_

uint32_t resdb::ViewChangeManager::view_change_counter_
protected

Definition at line 140 of file viewchange_manager.h.

◆ viewchange_request_

std::map<uint64_t, std::map<uint32_t, ViewChangeMessage> > resdb::ViewChangeManager::viewchange_request_
protected

Definition at line 135 of file viewchange_manager.h.

◆ viewchange_timeout_min_heap_

std::map<uint64_t, std::priority_queue<std::shared_ptr<ViewChangeTimeout> > > resdb::ViewChangeManager::viewchange_timeout_min_heap_
protected

Definition at line 149 of file viewchange_manager.h.

◆ viewchange_timer_signal_

sem_t resdb::ViewChangeManager::viewchange_timer_signal_
protected

Definition at line 146 of file viewchange_manager.h.