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); }
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); }
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); }