[C++] FlatBuffers

초연·2023년 4월 25일
0

CPP

목록 보기
2/3

정의

플랫버퍼(FlatBuffers)란 패킷 송수신 시, 데이터 직렬화와 역직렬화를 담당하는 라이브러리이다.

환경 설정

  1. IDL(Interface Description Language)로 fbs 파일 작성

  2. flatc로 컴파일, 옵션에 지정한 언어로 번역된 클래스 파일이 생성됨

  3. 생성된 파일을 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;
}
profile
게임 클라이언트 프로그래머

0개의 댓글

관련 채용 정보