스트리밍 BSON
이 페이지의 내용
bson_reader_t 파일 디스크립터 또는 메모리 리전 으로 초기화할 수 있는 스트리밍 리더를 제공합니다. bson_writer_t 메모리 리전 으로 초기화할 수 있는 스트리밍 기록기를 제공합니다. ( BSON 을 파일 디스크립터로 스트리밍하는 것은 아직 지원되지 않습니다.)
BSON 스트림에서 읽기
bson_reader_t 파일 디스크립터 또는 메모리 버퍼에서 순차적 BSON 문서를 읽을 수 있는 편리한 API 를 제공합니다. bson_reader_read 함수는 기본 스트림 에서 앞으로 읽고 bson_t 를 반환합니다. 즉, 검사하고 반복할 수 있습니다.
int main (int argc, char *argv[]) { bson_reader_t *reader; const bson_t *doc; bson_error_t error; bool eof; reader = bson_reader_new_from_file ("mycollection.bson", &error); if (!reader) { fprintf (stderr, "Failed to open file.\n"); return 1; } while ((doc = bson_reader_read (reader, &eof))) { char *str = bson_as_canonical_extended_json (doc, NULL); printf ("%s\n", str); bson_free (str); } if (!eof) { fprintf (stderr, "corrupted bson document found at %u\n", (unsigned) bson_reader_tell (reader)); } bson_reader_destroy (reader); return 0; }
bson_reader_new_from_fd 를 참조하세요. , bson_reader_new_from_file 및 bson_reader_new_from_data 을(를) 참조하세요.
BSON 문서 시퀀스 작성
bson_writer_t 와 함께 증가할 수 있는 메모리 버퍼에 BSON 문서 시퀀스를 쓰기 (write) 수 있는 편리한 API 를 realloc()
제공합니다. bson_writer_begin 및 bson_writer_end 함수는 문서 시퀀스를 작성하는 동안 기본 버퍼를 관리 합니다.
이 기능은 상위 언어 에서 문서를 직렬화하는 동안 네트워크 패킷에 쓰기 (write) 싶은 경우에도 유용할 수 있습니다(단, 패킷 헤더 바로 뒤에 작성해야 함).
int main (int argc, char *argv[]) { bson_writer_t *writer; bson_t *doc; uint8_t *buf = NULL; size_t buflen = 0; bool r; int i; writer = bson_writer_new (&buf, &buflen, 0, bson_realloc_ctx, NULL); for (i = 0; i < 10000; i++) { r = bson_writer_begin (writer, &doc); assert (r); r = BSON_APPEND_INT32 (doc, "i", i); assert (r); bson_writer_end (writer); } bson_free (buf); return 0; }
bson_writer_new 를 참조하세요. 을(를) 참조하세요.