Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/H5FDsplitter.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
0002  * Copyright by The HDF Group.                                               *
0003  * All rights reserved.                                                      *
0004  *                                                                           *
0005  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
0006  * terms governing use, modification, and redistribution, is contained in    *
0007  * the COPYING file, which can be found at the root of the source code       *
0008  * distribution tree, or in https://www.hdfgroup.org/licenses.               *
0009  * If you do not have access to either file, you may request a copy from     *
0010  * help@hdfgroup.org.                                                        *
0011  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
0012 
0013 /*
0014  * Purpose: The public header file for the splitter virtual file driver (VFD)
0015  */
0016 
0017 #ifndef H5FDsplitter_H
0018 #define H5FDsplitter_H
0019 
0020 /** Initializer for the splitter VFD */
0021 #define H5FD_SPLITTER (H5FDperform_init(H5FD_splitter_init))
0022 
0023 /** Identifier for the splitter VFD */
0024 #define H5FD_SPLITTER_VALUE H5_VFD_SPLITTER
0025 
0026 /** The version of the H5FD_splitter_vfd_config_t structure used */
0027 #define H5FD_CURR_SPLITTER_VFD_CONFIG_VERSION 1
0028 
0029 /**
0030  * Maximum length of a filename/path string in the Write-Only channel,
0031  * including the NULL-terminator. \since 1.10.7
0032  */
0033 #define H5FD_SPLITTER_PATH_MAX 4096
0034 
0035 /** Semi-unique constant used to help identify structure pointers \since 1.10.7 */
0036 #define H5FD_SPLITTER_MAGIC 0x2B916880
0037 
0038 //! <!-- [H5FD_splitter_vfd_config_t_snip] -->
0039 /**
0040  * Configuration options for setting up the Splitter VFD
0041  */
0042 typedef struct H5FD_splitter_vfd_config_t {
0043     int32_t      magic;   /**< Magic number to identify this struct. Must be \p H5FD_SPLITTER_MAGIC. */
0044     unsigned int version; /**< Version number of this struct. Currently must be \p
0045                              H5FD_CURR_SPLITTER_VFD_CONFIG_VERSION. */
0046     hid_t rw_fapl_id;     /**< File-access property list for setting up the read/write channel. Can be \p
0047                              H5P_DEFAULT. */
0048     hid_t wo_fapl_id; /**< File-access property list for setting up the read-only channel. The selected VFD
0049                          must support the \p H5FD_FEAT_DEFAULT_VFD_COMPATIBLE flag. Can be \p H5P_DEFAULT. */
0050     char wo_path[H5FD_SPLITTER_PATH_MAX + 1];       /**< Path to the write-only file */
0051     char log_file_path[H5FD_SPLITTER_PATH_MAX + 1]; /**< Path to the log file, which will be created on HDF5
0052                                                        file open (existing files will be clobbered). Can be
0053                                                        NULL, in which case no logging output is generated. */
0054     hbool_t ignore_wo_errs;                         /**< Whether to ignore errors on the write-only channel */
0055 } H5FD_splitter_vfd_config_t;
0056 //! <!-- [H5FD_splitter_vfd_config_t_snip] -->
0057 
0058 #ifdef __cplusplus
0059 extern "C" {
0060 #endif
0061 
0062 /** @private
0063  *
0064  * \brief Private initializer for the splitter VFD
0065  */
0066 H5_DLL hid_t H5FD_splitter_init(void);
0067 
0068 /**
0069  * \ingroup FAPL
0070  *
0071  * \brief Sets the file access property list to use the splitter driver
0072  *
0073  * \fapl_id
0074  * \param[in] config_ptr Configuration options for the VFD
0075  * \returns \herr_t
0076  *
0077  * \details H5Pset_fapl_splitter() sets the file access property list identifier,
0078  *          \p fapl_id, to use the splitter driver.
0079  *
0080  *          The splitter VFD echoes file manipulation (e.g. create, truncate)
0081  *          and write calls to a second, write-only file.
0082  *
0083  *          \note The splitter VFD should not be confused with the split VFD,
0084  *          which is a simplification of the multi VFD and creates separate
0085  *          files for metadata and data.
0086  *
0087  * \since 1.10.7, 1.12.1
0088  */
0089 H5_DLL herr_t H5Pset_fapl_splitter(hid_t fapl_id, H5FD_splitter_vfd_config_t *config_ptr);
0090 
0091 /**
0092  * \ingroup FAPL
0093  *
0094  * \brief Gets splitter driver properties from the the file access property list
0095  *
0096  * \fapl_id
0097  * \param[out] config_ptr Configuration options for the VFD
0098  * \returns \herr_t
0099  *
0100  * \details H5Pset_fapl_splitter() sets the file access property list identifier,
0101  *          \p fapl_id, to use the splitter driver.
0102  *
0103  *          The splitter VFD echoes file manipulation (e.g. create, truncate)
0104  *          and write calls to a second file.
0105  *
0106  *          \note The splitter VFD should not be confused with the split VFD,
0107  *          which is a simplification of the multi VFD and creates separate
0108  *          files for metadata and data.
0109  *
0110  * \since 1.10.7, 1.12.1
0111  */
0112 H5_DLL herr_t H5Pget_fapl_splitter(hid_t fapl_id, H5FD_splitter_vfd_config_t *config_ptr);
0113 
0114 #ifdef __cplusplus
0115 }
0116 #endif
0117 
0118 #endif