Provided by: libbson-doc_1.15.0-1_all bug

NAME

       bson_streaming_bson - Streaming BSON

       bson_reader_t  provides  a streaming reader which can be initialized with a filedescriptor
       or memory region. bson_writer_t provides a streaming writer which can be initialized  with
       a memory region. (Streaming BSON to a file descriptor is not yet supported.)

READING 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() function will read forward in the
       underlying stream and return a bson_t that can be inspected and iterated upon.

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

       See          bson_reader_new_from_fd(),          bson_reader_new_from_file(),          and
       bson_reader_new_from_data() 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().  The  bson_writer_begin()  and bson_writer_end()
       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).

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

       See bson_writer_new() for more information.

AUTHOR

       MongoDB, Inc

COPYRIGHT

       2017-present, MongoDB, Inc