Partition ballot numbers between all legislators
This commit is contained in:
parent
b33d2f17ab
commit
5c27b7df2f
@ -68,13 +68,16 @@ namespace paxos
|
||||
|
||||
/* Create VHostConfig vector and fill with VHostConfig */
|
||||
std::vector<LegislatorConfig> legislator_configs;
|
||||
int i = 0;
|
||||
|
||||
for (auto it : legislators)
|
||||
{
|
||||
/* Differenciable vhost checking */
|
||||
auto legislator = it.get<paxos::LegislatorConfig>();
|
||||
legislator.ballot_partition_id = i;
|
||||
legislator.is_self = name == legislator.name;
|
||||
legislator_configs.push_back(legislator);
|
||||
++i;
|
||||
}
|
||||
|
||||
return legislator_configs;
|
||||
|
@ -12,6 +12,8 @@ namespace paxos
|
||||
std::string port;
|
||||
std::string name;
|
||||
bool is_self;
|
||||
|
||||
int ballot_partition_id;
|
||||
};
|
||||
|
||||
struct ServerConfig
|
||||
|
@ -19,12 +19,19 @@ namespace paxos
|
||||
{
|
||||
has_started = false;
|
||||
quorum_previous_votes.clear();
|
||||
int new_ballot_number = ledger.last_tried() + 1;
|
||||
int new_ballot_number = get_next_ballot_id(ledger.last_tried());
|
||||
ledger.set_last_tried(new_ballot_number);
|
||||
log(config_.name + " is initiating ballot " + std::to_string(new_ballot_number), green);
|
||||
send_next_ballot(new_ballot_number);
|
||||
}
|
||||
|
||||
int Legislator::get_next_ballot_id(int previous_ballot_id)
|
||||
{
|
||||
if (previous_ballot_id == -1)
|
||||
return config_.ballot_partition_id;
|
||||
return previous_ballot_id + legislators.size();
|
||||
}
|
||||
|
||||
void Legislator::send_next_ballot(int ballot)
|
||||
{
|
||||
std::string ballot_string = std::to_string(ballot);
|
||||
|
@ -16,6 +16,7 @@ namespace paxos
|
||||
LegislatorConfig config_;
|
||||
|
||||
void initiate_ballot();
|
||||
int get_next_ballot_id(int previous_ballot_id);
|
||||
|
||||
void send_next_ballot(int ballot);
|
||||
void receive_next_ballot(Message message);
|
||||
|
Loading…
Reference in New Issue
Block a user