Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
BSON_READER_T(3)		     libbson			BSON_READER_T(3)

Streaming BSON Document Reader

SYNOPSIS
	#include <bson/bson.h>

	typedef struct _bson_reader_t bson_reader_t;

	bson_reader_t *
	bson_reader_new_from_handle (void *handle,
				     bson_reader_read_func_t rf,
				     bson_reader_destroy_func_t df);
	bson_reader_t *
	bson_reader_new_from_fd (int fd, bool close_on_destroy);
	bson_reader_t *
	bson_reader_new_from_file (const char *path, bson_error_t *error);
	bson_reader_t *
	bson_reader_new_from_data (const uint8_t *data, size_t length);

	void
	bson_reader_destroy (bson_reader_t *reader);

DESCRIPTION
     bson_reader_t is a structure used for reading a sequence of BSON documents.
     The  sequence  can  come  from  a file-descriptor, memory region, or custom
     callbacks.

EXAMPLE
	/*
	 * Copyright 2009-present MongoDB, Inc.
	 *
	 * Licensed under the Apache License, Version 2.0 (the "License");
	 * you may not use this file except in compliance with the License.
	 * You may obtain a copy of the License at
	 *
	 *   http://www.apache.org/licenses/LICENSE-2.0
	 *
	 * Unless required by applicable law or agreed to in writing, software
	 * distributed under the License is distributed on an "AS IS" BASIS,
	 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	 * See the License for the specific language governing permissions and
	 * limitations under the License.
	 */

	/*
	 * This program will print each BSON document contained in the provided files
	 * as a JSON string to STDOUT.
	 */

	#include <bson/bson.h>
	#include <stdio.h>

	int
	main (int argc, char *argv[])
	{
	   bson_reader_t *reader;
	   const bson_t *b;
	   bson_error_t error;
	   const char *filename;
	   char *str;
	   int i;

	   /*
	    * Print program usage if no arguments are provided.
	    */
	   if (argc == 1) {
	      fprintf (stderr, "usage: %s [FILE | -]...\nUse - for STDIN.\n", argv[0]);
	      return 1;
	   }

	   /*
	    * Process command line arguments expecting each to be a filename.
	    */
	   for (i = 1; i < argc; i++) {
	      filename = argv[i];

	      if (strcmp (filename, "-") == 0) {
		 reader = bson_reader_new_from_fd (STDIN_FILENO, false);
	      } else {
		 if (!(reader = bson_reader_new_from_file (filename, &error))) {
		    fprintf (
		       stderr, "Failed to open \"%s\": %s\n", filename, error.message);
		    continue;
		 }
	      }

	      /*
	       * Convert each incoming document to JSON and print to stdout.
	       */
	      while ((b = bson_reader_read (reader, NULL))) {
		 str = bson_as_canonical_extended_json (b, NULL);
		 fprintf (stdout, "%s\n", str);
		 bson_free (str);
	      }

	      /*
	       * Cleanup after our reader, which closes the file descriptor.
	       */
	      bson_reader_destroy (reader);
	   }

	   return 0;
	}

AUTHOR
     MongoDB, Inc

COPYRIGHT
     2009-present, MongoDB, Inc.

1.30.8				  Aug 27, 2026			BSON_READER_T(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bson_reader_t&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help