Esempio n. 1
0
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;
}
Esempio n. 2
0
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));
    }
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}
Esempio n. 5
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();
}
Esempio n. 6
0
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;
}