Ejemplo n.º 1
0
bson_reader_t *
bson_reader_new_from_handle (void                       *handle,
                             bson_reader_read_func_t     rf,
                             bson_reader_destroy_func_t  df)
{
   bson_reader_handle_t *real;

   bson_return_val_if_fail (handle, NULL);
   bson_return_val_if_fail (rf, NULL);

   real = bson_malloc0 (sizeof *real);
   real->type = BSON_READER_HANDLE;
   real->data = bson_malloc0 (1024);
   real->handle = handle;
   real->len = 1024;
   real->offset = 0;

   bson_reader_set_read_func ((bson_reader_t *)real, rf);

   if (df) {
      bson_reader_set_destroy_func ((bson_reader_t *)real, df);
   }

   _bson_reader_handle_fill_buffer (real);

   return (bson_reader_t *)real;
}
Ejemplo n.º 2
0
/**
 * bson_reader_new_from_fd:
 * @fd: A file-descriptor to read from.
 * @close_fd: If the file-descriptor should be closed when done.
 *
 * Allocates and initializes a new bson_reader_t that will read BSON documents
 * into bson_t structures from an underlying file-descriptor.
 *
 * If you would like the reader to call close() on @fd in
 * bson_reader_destroy(), then specify TRUE for close_fd.
 *
 * Returns: (transfer full): A newly allocated bson_reader_t that should be
 *   freed with bson_reader_destroy().
 */
bson_reader_t *
bson_reader_new_from_fd (int         fd,
                         bson_bool_t close_fd)
{
   bson_reader_fd_t *real;

   real = bson_malloc0 (sizeof *real);
   real->type = BSON_READER_FD;
   real->data = bson_malloc0 (1024);
   real->fd = fd;
   real->len = 1024;
   real->offset = 0;

   bson_reader_set_read_func ((bson_reader_t *)real, bson_read);

   _bson_reader_fd_fill_buffer (real);

   return (bson_reader_t *)real;
}