protobuf巢狀類操作例項

2021-06-22 18:41:54 字數 1128 閱讀 6339

protobuf類進行巢狀時,協議描述如下:

/* 客戶端拉取訊息請求包 */

message secret_get_req

/* 訊息請求包封裝 */

message secret_msg_req

1、進行打包時的操作如下:

secret_get_req stgetreq;

stgetreq.set_version(1);

secret_msg_req *pmsgreq = stgetreq.add_msg_req_list();

pmsgreq->set_userid("userid");

pmsgreq->set_msg_beg(123);

pmsgreq->set_msg_end(467);

2、對巢狀類進行解包時的操作如下:

secret_get_req cgetreq;

string strbody;

char *pbody = (char *)p_data;

uslength - 2 - sizeof(secmsghead));

//這裡進行反序列化

cgetreq.parsefromstring(strbody);

uint32_t version = cgetreq.version();

uint32_t ulsize = cgetreq.msg_req_list_size();

secret_msg_req stmsgreq = cgetreq.msg_req_list(0);

printf( "userid1 = %s\n",stmsgreq.userid().c_str());

printf ("beg1 = %u\n", stmsgreq.msg_beg());

printf( "end1 = %u\n", stmsgreq.msg_end());

stmsgreq = cgetreq.msg_req_list(1);

printf( "userid2 = %s\n",stmsgreq.userid().c_str());

printf("beg2 = %u\n", stmsgreq.msg_beg());

printf( "end2 = %u\n", stmsgreq.msg_end());

(六)ProtoBuf訊息巢狀

我們在各種語言開發中類的定義是可以互相巢狀的,也可以使用其他類作為自己的成員屬性型別。在protobuf中同樣支援訊息巢狀,可以在乙個訊息中巢狀另外乙個訊息,字段型別可以是另外乙個訊息型別。定義result訊息 message result 定義searchresponse訊息 message se...

protobuf 中的巢狀訊息的使用

protobuf的簡單的使用,不過還留下了乙個問題,那就是之前主要介紹的都是對簡單資料的賦值,簡單資料直接採用set xx 即可,但是如果不是簡單變數而是自定義的復合型別變數,就沒有簡單的set函式呼叫了,下面看乙個簡單的例子。在網路遊戲中,遊戲玩家之間的同步是乙個最基本的功能,而同步是通過對座標的...

String類操作例項

class stringdemo trim的實現。去除字串兩端的空格。思路 1,字串每乙個字元都有自己的角標。可以定義兩個索引變數,判斷開始索引位的字元是否是空格,如果是就繼續向下判斷。開始索引在自增。同理,判斷結束索引位的字元是否是空格,如果是就繼續向前判斷。並結束索引自減。public stri...