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; }
/** * 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; }