命令处理流程:
void Monitor::dispatch_op(MonOpRequestRef op) //根据消息的数据类型调用不同的PaxosService::dispatch_op()
|
| MSG_MON_COMMAND //MonmapMonitor类型的消息
|
void Monitor::handle_command(MonOpRequestRef op)
|
|
|
bool PaxosService::dispatch(MonOpRequestRef op)
|
|
|
如果是查询命令bool MonmapMonitor::preprocess_query(MonOpRequestRef op) //返回
|
bool MonmapMonitor::prepare_update(MonOpRequestRef op)
|
|MSG_MON_COMMAND :bool MonmapMonitor::prepare_command(MonOpRequestRef op)
|MSG_MON_JOIN : bool MonmapMonitor::prepare_join(MonOpRequestRef op)
|
如果prepare_update返回结果为true,表明有一个proposal需要propose,则
void PaxosService::propose_pending()
|
void MonmapMonitor::encode_pe
void Monitor::dispatch_op(MonOpRequestRef op) //根据消息的数据类型调用不同的PaxosService::dispatch_op()
|
| MSG_MON_COMMAND //MonmapMonitor类型的消息
|
void Monitor::handle_command(MonOpRequestRef op)
|
|
|
bool PaxosService::dispatch(MonOpRequestRef op)
|
|
|
如果是查询命令bool MonmapMonitor::preprocess_query(MonOpRequestRef op) //返回
|
bool MonmapMonitor::prepare_update(MonOpRequestRef op)
|
|MSG_MON_COMMAND :bool MonmapMonitor::prepare_command(MonOpRequestRef op)
|MSG_MON_JOIN : bool MonmapMonitor::prepare_join(MonOpRequestRef op)
|
如果prepare_update返回结果为true,表明有一个proposal需要propose,则
void PaxosService::propose_pending()
|
void MonmapMonitor::encode_pe