void masterconn_gotpacket(masterconn *eptr,uint32_t type,const uint8_t *data,uint32_t length) { switch (type) { case ANTOAN_NOP: eptr->masteraddrvalid = 1; if (eptr->registerstate==UNREGISTERED) { eptr->registerstate=REGISTERED; masterconn_sendchunksinfo(eptr); } break; case ANTOAN_UNKNOWN_COMMAND: // for future use break; case ANTOAN_BAD_COMMAND_SIZE: // for future use break; case MATOCS_CREATE: masterconn_create(eptr,data,length); break; case MATOCS_DELETE: masterconn_delete(eptr,data,length); break; case MATOCS_SET_VERSION: masterconn_setversion(eptr,data,length); break; case MATOCS_DUPLICATE: masterconn_duplicate(eptr,data,length); break; case MATOCS_REPLICATE: masterconn_replicate(eptr,data,length); break; case MATOCS_CHUNKOP: masterconn_chunkop(eptr,data,length); break; case MATOCS_TRUNCATE: masterconn_truncate(eptr,data,length); break; case MATOCS_DUPTRUNC: masterconn_duptrunc(eptr,data,length); break; case ANTOCS_GET_CHUNK_BLOCKS: masterconn_get_chunk_blocks(eptr,data,length); break; case ANTOCS_GET_CHUNK_CHECKSUM: masterconn_get_chunk_checksum(eptr,data,length); break; case ANTOCS_GET_CHUNK_CHECKSUM_TAB: masterconn_get_chunk_checksum_tab(eptr,data,length); break; case MATOCS_MASTER_ACK: eptr->masteraddrvalid = 1; eptr->new_register_mode = 3; masterconn_master_ack(eptr,data,length); break; default: syslog(LOG_NOTICE,"got unknown message (type:%"PRIu32")",type); eptr->mode = KILL; } }
//读取来自Master的packet,分析其类型,分发到不同的处理函数进行处理 //调用:masterconn_read() void masterconn_gotpacket(masterconn *eptr,uint32_t type,const uint8_t *data,uint32_t length) { switch (type) { case ANTOAN_NOP: break; case MATOCS_CREATE: masterconn_create(eptr,data,length); break; case MATOCS_DELETE: masterconn_delete(eptr,data,length); break; case MATOCS_SET_VERSION: masterconn_setversion(eptr,data,length); break; case MATOCS_DUPLICATE: masterconn_duplicate(eptr,data,length); break; case MATOCS_REPLICATE: masterconn_replicate(eptr,data,length); break; case MATOCS_CHUNKOP: masterconn_chunkop(eptr,data,length); break; case MATOCS_TRUNCATE: masterconn_truncate(eptr,data,length); break; case MATOCS_DUPTRUNC: masterconn_duptrunc(eptr,data,length); break; case MATOCS_STRUCTURE_LOG: masterconn_structure_log(eptr,data,length); break; case MATOCS_STRUCTURE_LOG_ROTATE: masterconn_structure_log_rotate(eptr,data,length); break; case ANTOCS_CHUNK_CHECKSUM: masterconn_chunk_checksum(eptr,data,length); break; case ANTOCS_CHUNK_CHECKSUM_TAB: masterconn_chunk_checksum_tab(eptr,data,length); break; default: syslog(LOG_NOTICE,"got unknown message (type:%"PRIu32")",type); eptr->mode = KILL; } }