示例#1
0
static void proposer_preexecute(struct evproposer* p)
{
	int i;
	prepare_req pr;

	/*获得可以发起提案的个数*/
	int count = p->preexec_window - proposer_prepared_count(p->state);
	for(i = 0; i < count; i ++){
		 /*构建一个prepare_req消息*/
		proposer_prepare(p->state, &pr);
		/*发起一个提案*/
		send_prepares(p, &pr);
	}
}
示例#2
0
static void
proposer_preexecute(struct evproposer* p)
{
	int i;
	prepare_req pr;
	int count = p->preexec_window - proposer_prepared_count(p->state);  //先进先出队列保存准备实例,队列长128,用一个释放一个,有空间了就把新的加到队列末尾。
	if (count <= 0) return;
	for (i = 0; i < count; i++) {
		proposer_prepare(p->state, &pr);              //发送prepare请求
		send_prepares(p, &pr);
	}
	paxos_log_debug("Opened %d new instances", count);
	
}
示例#3
0
static void
proposer_preexecute(struct proposer *p)
{
    int i;
    paxos_message msg;
    msg.type = PAXOS_PREPARE;
    int count = BURST_SIZE - proposer_prepared_count(p);
    if (count <= 0)
        return;
    for (i = 0; i < count; i++) {
        proposer_prepare(p, &msg.u.prepare);
        rte_log(RTE_LOG_DEBUG, RTE_LOGTYPE_USER8,
                "%s Prepare instance %d ballot %d\n",
                __func__, msg.u.prepare.iid, msg.u.prepare.ballot);
        send_paxos_message(&msg);
    }

}