• Home
  • About
    • Moon photo

      Moon

      Moon is a minimal, one column jekyll theme for your blog.

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

FlatBuffer를 이용한 데이터 버퍼 생성

19 Feb 2021

Reading time ~1 minute

FlatBuffer를 이용한 데이터 버퍼 생성

개념

  • 테이블 : 데이터 버퍼로 생성할 데이터 정의
  • 구조체 : 테이블에 포함되는 사용자 정의 자료형(ex : Vector)

사용법

  • FlatBufferBuilder를 이용해 버퍼 생성
  • 각 테이블 클래스를 이용해 FlatBufferBuilder에 테이블 데이터 입력

FlatBufferBuilder

  • 버퍼 생성 및 버퍼 데이터 값 입력 제공
  • 각 테이블 클래스에 대한 Start{테이블명} ~ End{테이블명} or Create{테이블명} 함수를 사용하여 버퍼에 데이터값 입력
  • 버퍼에 모든 데이터 입력 완료 후 Finish 함수를 호출하여, 버퍼 데이터 메타정보 저장 (버퍼 오프셋, 버퍼 길이(기본 false))
  • SizedByteArray 함수를 호출해 서버에 전송할 최종 byte Array 생성

FlatBufferBuilder 내부 처리

  • Start{테이블명} ~ End{테이블명} or Create{테이블명} 함수 사용 시 필드에 대한 메타정보도 버퍼에 입력됨
  • 버퍼에 테이블 필드 값 저장 시 버퍼 끝부터 역순으로 저장됨
  • 버퍼 사이즈가 부족한 경우 버퍼 크기 현재 크기에서 2배 증가 (배열 생성 및 복사가 일어나, 초기 생성 시 알맞은 사이즈 값 조정 필요)

서버 판별용 데이터 저장

  • 테이블 타입 및 파싱할 버퍼 사이즈를 판별하기 위해 버퍼에 해당 정보 추가 필요
  • 버퍼 길이 추가 : FlatBufferBuilder Finish함수 대신 FinishSizePrefixed함수를 사용하면 버퍼 최상위에 길이 정보(int)가 추가됨, int 외에 타입은 직접 데이터 삽입 필요
  • 테이블 타입 : FlatBufferBuilder를 사용해 직접 데이터 삽입 필요(ex : PutShort, PutInt)


flatbuffer Share Tweet +1