(六)ProtoBuf訊息巢狀

2022-10-10 22:15:21 字數 783 閱讀 4205

我們在各種語言開發中類的定義是可以互相巢狀的,也可以使用其他類作為自己的成員屬性型別。

在protobuf中同樣支援訊息巢狀,可以在乙個訊息中巢狀另外乙個訊息,字段型別可以是另外乙個訊息型別。

// 定義result訊息

message result

// 定義searchresponse訊息

message searchresponse

類似類巢狀一樣,訊息也可以巢狀。

例子:

message searchresponse 

// 引用巢狀的訊息定義

repeated result results = 1;

}

我們在開發乙個專案的時候通常有很多訊息定義,都寫在乙個proto檔案,不方便維護,通常會將訊息定義寫在不同的proto檔案中,在需要的時候可以通過import匯入其他proto檔案定義的訊息。

例子:儲存檔案: result.proto

syntax = "proto3";

// result訊息定義

message result

儲存檔案: search_response.proto

syntax = "proto3";

// 匯入result訊息定義

import "result.proto";

// 定義searchresponse訊息

message searchresponse

protobuf 中的巢狀訊息的使用

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

protobuf巢狀類操作例項

protobuf類進行巢狀時,協議描述如下 客戶端拉取訊息請求包 message secret get req 訊息請求包封裝 message secret msg req 1 進行打包時的操作如下 secret get req stgetreq stgetreq.set version 1 sec...

用protobuf定義訊息及處理

用protobuf定義訊息及處理 金慶的專欄 訊息定義 package msgpb message msg 訊息傳送 void msgsender send const std string sdest,const msgpb msg msg void msgsender send const st...