int32_t process_test_message(struct mile_message_header* msg_head, struct data_buffer* rbuf, struct data_buffer* sbuf) { int32_t result_code = MILE_RETURN_SUCCESS; MEM_POOL_PTR mem_pool; switch (msg_head->message_type) { case MT_TEST_REQ_ECHO: // echo message for testing. { mem_pool = mem_pool_init(MB_SIZE); const char *str = read_cstring(rbuf, mem_pool); log_debug("get echo message [%s]", str); write_int32(0, sbuf); write_int8(msg_head->version_major, sbuf); write_int8(msg_head->version_minor, sbuf); write_int16(MT_TEST_RES_ECHO, sbuf); write_int32(msg_head->message_id, sbuf); write_int32(strlen(str), sbuf); write_bytes((uint8_t *) str, strlen(str), sbuf); fill_int32(sbuf->data_len, sbuf, 0); result_code = MILE_RETURN_SUCCESS; mem_pool_destroy(mem_pool); } break; default: result_code = -1; break; } return result_code; }
void VoxelFile::load_fp(QFile & fp) { QDataStream stream(&fp); stream.setByteOrder(QDataStream::LittleEndian); stream >> x_size; stream >> y_size; stream >> z_size; stream >> x_offset; stream >> y_offset; stream >> z_offset; if (data != NULL) delete[] data; data = new unsigned char[x_size * y_size * z_size]; stream.readRawData((char*)data, x_size * y_size * z_size); stream.skipRawData(256 * 3); // reference points points.clear(); quint8 point_count; if (stream.atEnd()) point_count = 0; else stream >> point_count; QString name; qint32 x, y, z; for (int i = 0; i < point_count; i++) { read_cstring(stream, name); stream >> x; stream >> y; stream >> z; points.push_back(ReferencePoint(name, x, y, z)); } }
bool MCSessionReadIndex(MCSessionIndexRef p_index) { bool t_success = true; t_success = read_uint32(p_index->file, p_index->session_count); if (t_success) t_success = MCMemoryNewArray(p_index->session_count, p_index->session); for (uint32_t i = 0; t_success && i < p_index->session_count; i++) { t_success = MCMemoryNew(p_index->session[i]); if (t_success) t_success = read_cstring(p_index->file, p_index->session[i]->id) && read_cstring(p_index->file, p_index->session[i]->ip) && read_cstring(p_index->file, p_index->session[i]->filename) && read_real64(p_index->file, p_index->session[i]->expires); } return t_success; }
int32_t execute_index_stat_handle(struct data_buffer* dbuf,int socket_fd,MEM_POOL* mem_pool) { struct data_buffer rbuf; //发一个数据包长度 if(socket_write(socket_fd,dbuf->data,dbuf->data_len) <= 0) return -1; //接受命名 memset(&rbuf,0,sizeof(struct data_buffer)); rbuf.data_len = sizeof(uint32_t); rbuf.size = rbuf.data_len; rbuf.data = (uint8_t *)mem_pool_malloc(mem_pool,sizeof(uint32_t)); if(socket_read(socket_fd,rbuf.data,rbuf.data_len) <= 0) return -1; rbuf.data_len = read_int32(&rbuf); rbuf.data = (uint8_t *)mem_pool_malloc(mem_pool,rbuf.data_len); rbuf.rpos = 0; rbuf.size = rbuf.data_len; if(socket_read(socket_fd,rbuf.data,rbuf.data_len) <= 0) return -1; rbuf.rpos += MESSAGE_HEAD_LEN; uint16_t type = message_type(&rbuf); if (type != MT_DC_STAT_RS) return -1; uint16_t field_count = read_int16(&rbuf); uint16_t i; char* field_name = NULL; fprintf(stderr,"%-20s%-20s%-20s%-20s\n","FIELD_NAME","INDEX_TYPE","DATA_TYPE","FLAG"); uint8_t j; uint8_t index_num; for(i=0; i<field_count; i++) { field_name = read_cstring(&rbuf,mem_pool); index_num = read_int8(&rbuf); for(j=0;j < index_num; j++) { fprintf(stderr,"%-20s",field_name); fprintf(stderr,"%-20u",read_int8(&rbuf)); fprintf(stderr,"%-20u",read_int8(&rbuf)); fprintf(stderr,"%-20u\n",read_int8(&rbuf)); } } return 0; }
void VoxelFile::load_palette() { if (global_palette != NULL) return; global_palette = new RGBColor[256]; palette_names = new QString[256]; QFile fp(PALETTE_FILE); if (!fp.open(QIODevice::ReadOnly)) return; for (int i = 0; i < 256; i++) fp.read((char*)&global_palette[i], sizeof(RGBColor)); QDataStream stream(&fp); stream.setByteOrder(QDataStream::LittleEndian); if (!fp.atEnd()) { // read names for (int i = 0; i < 256; i++) { read_cstring(stream, palette_names[i]); } } fp.close(); }
int execute_ldb_control_handle(struct data_buffer *dbuf, int socket_fd, MEM_POOL_PTR mem_pool) { struct data_buffer rbuf; if (socket_write(socket_fd, dbuf->data, dbuf->data_len) <= 0) return -1; memset(&rbuf,0,sizeof(struct data_buffer)); rbuf.data_len = sizeof(uint32_t); rbuf.size = rbuf.data_len; rbuf.data = (uint8_t *)mem_pool_malloc(mem_pool,sizeof(uint32_t)); if(socket_read(socket_fd,rbuf.data,sizeof(uint32_t)) <= 0) return -1; rbuf.data_len = read_int32(&rbuf); rbuf.data = (uint8_t *)mem_pool_malloc(mem_pool,rbuf.data_len); rbuf.rpos = 0; rbuf.size = rbuf.data_len; if(socket_read(socket_fd,rbuf.data,rbuf.data_len) <= 0) return -1; rbuf.rpos += MESSAGE_HEAD_LEN; uint16_t type = message_type(&rbuf); if (type != MT_DC_LDB_CONTROL) return -1; // content char *content = read_cstring(&rbuf, mem_pool); if (content) { fprintf(stderr, "%s\n", content); return 0; } else return -1; }