table of contents
| STREAMING_BSON(3) | Library Functions Manual | STREAMING_BSON(3) |
NAME¶
Streaming_BSON - NoneREADING FROM A BSON STREAM¶
bson_reader_t provides a convenient API to read sequential BSON documents from a file‐descriptor or memory buffer. The bson_reader_read(3) function will read forward in the underlying stream and returna bson_t that can be inspected and iterated upon.READER.C¶
#include <stdio.h>
#include <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_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;
}
See bson_reader_new_from_fd(3) , bson_reader_new_from_file(3) , and bson_reader_new_from_data(3) for more information.
WRITING A SEQUENCE OF BSON DOCUMENTS¶
bson_writer_t provides a convenient API to write a sequence of BSON documents to a memory buffer that can grow with realloc(3) bson_writer_begin(3) and bson_writer_end(3) functions will manage the underlying buffer while building the sequence of documents.This could also be useful if you want to write to a network packet while serializing the documents from a higher level language, (but do so just after the packets header).
WRITER.C¶
#include <stdio.h>
#include <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;
}
See bson_writer_new(3) for more information.
COLOPHON¶
This page is part of libbson. Please report any bugs at https://jira.mongodb.org/browse/CDRIVER.| 2016‐10‐12 | libbson |