Menu Docs
Página inicial do Docs
/ / /
Driver C
/ /

Transmissão de BSON

Nesta página

  • Lendo de um fluxo BSON
  • Escrevendo uma sequência de documentos BSON

bson_reader_t fornece um leitor de streaming que pode ser inicializado com um descritor de arquivo ou região de memória. bson_writer_t fornece um gravador de streaming que pode ser inicializado com uma região de memória. (Ainda não é suportada a transmissão de BSON para um descritor de arquivo.)

bson_reader_t fornece uma API conveniente para ler documentos BSON sequenciais de um descritor de arquivo ou buffer de memória. O bson_reader_read a função lerá para a frente no fluxo subjacente e retornará um bson_t que podem ser inspecionados e iterados.

#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;
}

Consulte bson_reader_new_from_fd, bson_reader_new_from_file, e bson_reader_new_from_data para mais informações.

bson_writer_t fornece uma API conveniente para gravar uma sequência de documentos BSON em um buffer de memória que pode crescer com realloc(). O bson_writer_begin e bson_writer_end As funções gerenciarão o buffer subjacente enquanto criam a sequência de documentos.

Isso também pode ser útil se você quiser escrever em um pacote de rede enquanto serializa os documentos de uma linguagem de nível superior (mas faça isso logo após o cabeçalho dos pacotes).

#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;
}

Consulte bson_writer_new para mais informações.

Voltar

Guias

Próximo

JSON