コード例 #1
0
ファイル: evproposer.c プロジェクト: mawentao007/paxos
static void
try_accept(struct evproposer* p)                                        //proposer将value等包装成accept_req包,交给evacceptor,后者将他们放入bufferevent中发送
{
	accept_req* ar;
	while ((ar = proposer_accept(p->state)) != NULL) {   //检验是否有propose实例,如果没有,执行execute
		send_accepts(p, ar);
		free(ar);
	}
	proposer_preexecute(p);
}
コード例 #2
0
ファイル: evprepare.c プロジェクト: ahnufy/libpaxos
static void try_accept(struct evproposer* p)
{
	accept_req* ar;
	while((ar = proposer_accept(p->state)) != NULL){ /*获取一个完成了第一阶段的提议,并根据其构建一个accept_reqs*/
		/*发起提议的第二阶段*/
		send_accepts(p, ar);
		free(ar);
	}

	/*检查是否可以发送更多的第一阶段的提议*/
	proposer_preexecute(p);
}
コード例 #3
0
ファイル: main.c プロジェクト: usi-systems/p4paxos
static void
try_accept(struct proposer *p)
{
    paxos_message msg;
    msg.type = PAXOS_ACCEPT;
    while (proposer_accept(p, &msg.u.accept)) {
        rte_log(RTE_LOG_DEBUG, RTE_LOGTYPE_USER8,
                "Send ACCEPT for instance %d\n", msg.u.accept.iid);
        send_paxos_message(&msg);
    }
    proposer_preexecute(p);
}