Docs Menu
Docs Home
/ / /
C 드라이버
/ /

스트리밍 BSON

이 페이지의 내용

  • BSON 스트림에서 읽기
  • BSON 문서 시퀀스 작성

bson_reader_t 파일 디스크립터 또는 메모리 리전 으로 초기화할 수 있는 스트리밍 리더를 제공합니다. bson_writer_t 메모리 리전 으로 초기화할 수 있는 스트리밍 기록기를 제공합니다. ( BSON 을 파일 디스크립터로 스트리밍하는 것은 아직 지원되지 않습니다.)

bson_reader_t 파일 디스크립터 또는 메모리 버퍼에서 순차적 BSON 문서를 읽을 수 있는 편리한 API 를 제공합니다. bson_reader_read 함수는 기본 스트림 에서 앞으로 읽고 bson_t 를 반환합니다. 즉, 검사하고 반복할 수 있습니다.

#include <stdio.h>
#include <bson/bson.h>
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_writer_t 와 함께 증가할 수 있는 메모리 버퍼에 BSON 문서 시퀀스를 쓰기 (write) 수 있는 편리한 API 를 realloc() 제공합니다. bson_writer_beginbson_writer_end 함수는 문서 시퀀스를 작성하는 동안 기본 버퍼를 관리 합니다.

이 기능은 상위 언어 에서 문서를 직렬화하는 동안 네트워크 패킷에 쓰기 (write) 싶은 경우에도 유용할 수 있습니다(단, 패킷 헤더 바로 뒤에 작성해야 함).

#include <stdio.h>
#include <bson/bson.h>
#include <assert.h>
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 를 참조하세요. 을(를) 참조하세요.

돌아가기

가이드