플랫버퍼(FlatBuffers)란 패킷 송수신 시, 데이터 직렬화와 역직렬화를 담당하는 라이브러리이다.
IDL(Interface Description Language)로 fbs 파일 작성
flatc로 컴파일, 옵션에 지정한 언어로 번역된 클래스 파일이 생성됨
생성된 파일을 include
table Player
{
Name: string;
Age: int;
}
root_type Player;
#include "flatbuffers/flatbuffers.h"
#include "player_generated.h"
#include <string>
#include <vector>
using namespace std;
int main()
{
flatbuffers::FlatBufferBuilder Builder;
/* 데이터 */
const auto& Name = Builder.CreateString("Choyeon");
const int Age = 21;
/* 직렬화 */
Builder.Finish(CreatePlayer(Builder, Name, Age));
/* 직렬화된 버퍼 */
/* GetBufferPointer부터 GetLength만큼 Buffer에 복사 */
vector<char> Buffer;
Buffer.insert(Buffer.end(), Builder.GetBufferPointer(), Builder.GetLength());
/* 역직렬화 */
const auto* Player = GetPlayer(Buffer.data());
/* 데이터 */
const auto& PlayerName = Player->Name();
const int PlayerAge = Player->Age();
Builder.ReleaseBufferPointer();
Builder.Clear();
return 0;
}