Commit Graph

36 Commits

Author SHA1 Message Date
Dana Robinson
88b4c915e8 Updated the 'const memory free' changes based on PR feedback. 2020-01-30 16:31:11 -08:00
Dana Robinson
9da387342e Added a free wrapper that lets us free constant pointers without
generating warnings.

Also, brought the const-ness of the VOL connector info in line with
the VFD info (not visible externally).
2020-01-30 11:01:25 -08:00
Dana Robinson
a92c735c9b Squashed commit of the token_refactoring branch: 2020-01-16 13:29:34 -08:00
Quincey Koziol
58cf795321 Refactor all the 'H5VL_*_optional' callbacks to move the type of operation out
of the va_list, so it's at least possible for another connector to know what
the operation is and decide whether to implement it or not.

Added a new VOL sub-class called "introspect" where callbacks that report
information about the connector or container can be placed.  Added an
'opt_query' callback to this sub-class, for a connector to report back
to the library whether a particular optional callback operation is supported.
Also added a 'get_conn_cls' introspection callback, to retrieve the H5VL_class_t
of a connector (either the "current" connector, H5VL_GET_CONN_LVL_CURR, or
the terminal connector, H5VL_GET_CONN_LVL_TERM).

Moved the "post open" operation from a file 'specific' operation to a file
'optional' operation, now that it's possible to detect (with the 'opt_query'
introspection callback) whether a VOL connector implements an optional
operation, without just returning an error.

Added new internal VOL helper routines: H5VL_object_is_native, to determine
if an object is in (or is a) native file, and H5VL_file_is_same, to determine
if two objects are in (or are) the same terminal VOL connector's container.
(And moved the special handling for FILE_IS_EQUAL operation out of internal VOL
callback routine into H5VL_file_is_same)

Made new dataset 'get' operation for H5Dvlen_get_buf_size, aligning it better
with other 'get' operations in API.

Fixed several issues with pass-through connectors, which are now passing the
'make check-passthrough-vol' tests again.

A bunch of warning and style cleanups as well.
2019-12-19 22:41:37 -06:00
Dana Robinson
9a93ecac52 Trivial parameter renaming in VOL API calls. 2019-11-25 15:30:04 -08:00
Neil Fortner
1dbec40d46 Implement H5VLget_file_type() to return a copy of a datatype with the
location set to be in a file.  Only meant to be used by VOL connectors.
Implement H5VLpeek_connector_id() to support connectors querying their
own IDs.  Fix app_ref with connector IDs in a couple places (external
VOLs registered as default through ENV should be visible to the
application).  Modify vlen and reference interfaces to work with
arbitrary VOL connectors.  Implement file "post open" specific
callback, to enable connectors to update their file structs after a
wrap context has been set.
2019-11-08 15:14:33 -06:00
Jerome Soumagne
fa6fdde1bf Fix H5VL_blob_get to return size of blob
Fix const in blob API

Add H5HG_HEAP_ID_SIZE macro to return native blob size

Add maximum size for blobs

Fix blob API callbacks to pass VOL file object

Add public wrappers for blob VOL API

Implement passthrough blob callbacks

Update H5Tvlen after callback changes

Update trace information for H5VL blob routines

Fix public header inclusion in native and passthru headers
2019-10-08 14:30:24 -05:00
Quincey Koziol
eaa65c862b Add 'blob' callbacks to VOL, along with a native implementation to store them
in the global heap, and changed the VL datatype conversion code to use blobs.

Move encode/decode of sequence lengths into VL datatype callbacks, from native
VOL blob routines.
2019-10-08 14:30:23 -05:00
Dana Robinson
5b6bd7c922 Added the map (H5M) API 2019-08-13 01:36:42 -07:00
Quincey Koziol
6d912bf0b5 Refactor group creation parameters to take them out of the group creation
property list and pass them as normal function parameters.
2019-04-25 01:12:46 -05:00
Quincey Koziol
b8bb6aec7e Refactor link creation parameters from being passing as properties in the
link creation property list to vararg function parameters.
2019-04-25 00:53:58 -05:00
Quincey Koziol
9fadb39656 Refactor attribute creation parameters to move parameters out of creation
property list and into function parameters.
2019-04-24 23:33:56 -05:00
Quincey Koziol
0ca6b1305f Refactor dataset creation parameters out of the dataset creation property
list and pass them as regular function parameters.
2019-04-24 22:31:36 -05:00
Quincey Koziol
62198c2436 Add an 'unwrap' VOL callback, so that connectors can unwrap an underlying
object without closing it.  (Especially needed for pass-through connectors)
2019-04-21 14:45:54 -05:00
Quincey Koziol
e6b8ebe954 Merge remote-tracking branch 'origin/develop' into env_vol_load 2019-03-12 11:49:03 -05:00
Quincey Koziol
8659857364 Add API routines to retrieve, restore, reset, and free library state.
(Primarily for use in the async VOL connector, which has to schedule API
operations for future execution and then restore the state of the library when
the operation actually executes)
2019-03-11 17:29:14 -05:00
Quincey Koziol
deeb302747 Specify the default VOL connector to use with an environment variable.
This implicitly adds support for changing the VOL connector for command-line
tools or any application linked with the library.

Also, add 'make check-vol' support for all directories, clearing up necessary
issues in testing scripts, etc.
2019-03-09 21:41:38 -06:00
Quincey Koziol
163dcebec5 Add ID type (of eventual hid_t) to the VOL "wrap" callback. 2019-02-07 14:31:26 -06:00
Quincey Koziol
bf79e1bd76 Added 'notify' callback for async requests; switched VOL class and info
comparison to return comparison value as parameter, so they can return error
values; "cancelled" -> "canceled"; switched order of 'wrap_object' and
'free_wrap_ctx' management callbacks.
2018-11-27 22:15:34 -06:00
Quincey Koziol
3055e499d5 Switch loc_params to VOL callbacks to pass struct by pointer instead of by
value.
2018-11-21 23:12:24 -06:00
Quincey Koziol
8939a2190f Add info_to_str and str_to_info "management" callbacks for serializing and
deserializing a connector's info object.
2018-11-21 00:56:13 -06:00
Quincey Koziol
59c28780d3 Add VOL connector info to the flie access property list returned from
H5Fget_access_plist().  Also, other misc. cleanups, etc.
2018-11-18 00:38:29 -06:00
Quincey Koziol
1daa7b830a Switch driver | plugin => connector. 2018-11-04 01:27:23 -05:00
Quincey Koziol
df7cf2a9d3 Refactor, standardize, and revise the async request callbacks. 2018-11-04 00:05:08 -05:00
Quincey Koziol
4806d29d9f Refactor and standardize named datatype VOL callbacks. 2018-11-01 17:02:27 -05:00
Quincey Koziol
1b00d04080 Refactor and standardize object VOL callbacks. 2018-11-01 14:54:44 -05:00
Quincey Koziol
a5cc4e272b Refactor and standardize the link VOL callbacks. Also fix error stack for
testing.
2018-11-01 11:22:54 -05:00
Quincey Koziol
a39486a341 Refactor and standardize group VOL callbacks. 2018-10-31 19:17:37 -05:00
Quincey Koziol
d66d5e01c0 Refactor and standarize file object callbacks, including some fixes on the
dataset callbacks.
2018-10-31 18:18:45 -05:00
Quincey Koziol
ca5ff0c0c2 Convert dataset callbacks to standard form, for wrapping object IDs, etc.
Also, fix a few attribute issues that I missed.
2018-10-29 13:15:56 -05:00
Quincey Koziol
8fd2e1d36e Convert attribute VOL callbacks to a standard form that sets up the wrapper
object info in a single place.
2018-10-28 20:51:16 -05:00
Quincey Koziol
305997501d Updates after merging changes from develop. 2018-10-26 00:54:29 -05:00
Quincey Koziol
4a32895724 Merge branch 'develop' of https://bitbucket.hdfgroup.org/scm/hdffv/hdf5 into stackable_vol 2018-10-25 18:32:13 -05:00
Quincey Koziol
0df6e44a6e Squashed commit of private branch changes to support stackable VOL plugins.
modified:   test/dsets.c
2018-10-24 23:52:47 -05:00
Dana Robinson
2d6d5cad0c Updates to the VOL ID and object API calls.
This brings the H5VL code in line with the H5I code regarding
naming, parameter order, etc.

Several public API calls were affected by this change.

These changed names to reflect their use with VOL drivers:
    H5VLregister()          -->     H5VLregister_driver()
    H5VLregister_by_name()  -->     H5VLregister_driver_by_name()
    H5VLunregister()        -->     H5VLunregister_driver()
    H5VLis_registered()     -->     H5VLis_driver_registered()

This call was renamed to match H5Iregister(). The order of the first
two parameters also reversed and the object pointer is now const.
    H5VLobject_register()   -->     H5VLregister()
2018-10-17 02:06:28 -07:00
Dana Robinson
e962df1591 VOL FEATURE 2018-10-10 08:10:15 -07:00