Protobuf反射功能

2022-02-13 03:23:02 字數 1602 閱讀 4793

#include #include 

#include

#include

#include

"person.pb.h

"using

namespace

std;

string

package;

typedef

void (*callbackfunc)(const

string &type_name, google::protobuf::message *message);

//descriptor -> callback

mapwrite_callbacks;

mapread_callbacks;

google::protobuf::message *createmessage(const std::string &type_name)

}return

message;

}void writehead(const

string &type_name)

void writepayload(const

string &data)

//業務邏輯,負責構造pb並序列化

void onstudentwrite(const

string &type_name, google::protobuf::message *arg)

//業務邏輯,負責構造pb並序列化

void onteacherwrite(const

string &type_name, google::protobuf::message *arg)

//業務邏輯,負責反序列化解出pb

void onstudentread(const

string &data, google::protobuf::message *arg)

//業務邏輯,負責反序列化解出pb

void onteacherread(const

string &data, google::protobuf::message *arg)

void writedispatcher(const

string &type_name) }//

解包,根據pb型別呼叫對應的業務處理函式

void

readdispatcher()

uint16_t data_len = atoi(package.substr(pos, 2

).c_str());

pos += 2

;

string data =package.substr(pos, data_len);

google::protobuf::message *message =createmessage(type_name);

pos +=data_len;

read_callbacks[descriptor](data, message);

//down casting

delete

message;

}}void

registecallback()

intmain()

參考

protobuf反射機制

參考 google protocol buffers protobuf 是一款非常優秀的庫,它定義了一種緊湊的可擴充套件二進位制訊息格式,特別適合網路資料傳輸。它為多種語言提供 binding,大大方便了分布式程式的開發,讓系統不再侷限於用某一種語言來編寫。在網路程式設計中使用 protobuf 需...

ProtoBuf 反射詳解

protocol buffer 簡稱 protobuf,是用於結構化資料序列化的靈活 高效 自動的方法,又如 xml,不過它更小 更快 也更簡單。你可以定義自己的資料結構,然後使用 生成器生成的 來讀寫這個資料結構。你甚至可以在無需重新部署程式的情況下更新資料結構。本文主要介紹 protobuf 裡...

C 反射功能

c 中的反射使用主要集中在system.reflection命名空間中,通過獲取物件的屬性和方法並建立物件來呼叫對應的函式等功能,方法主要集中在如下類 methodinfo 獲取類的方法 type 獲取類的型別 constructinfo 獲取該類的構造方法用於建立物件。完整的示例如下 class ...