From d93cb9ca25b5a5e987c6b9023f6868d47dd93a9a Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Tue, 4 Oct 2016 17:50:54 -0400 Subject: Added C++ wrappers (get/setCoreWriteTracking()) for new H5Pset/get_core_write_tracking() API calls. --- c++/src/H5FaccProp.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ c++/src/H5FaccProp.h | 6 ++++++ c++/test/tfile.cpp | 2 +- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/c++/src/H5FaccProp.cpp b/c++/src/H5FaccProp.cpp index 972f915..653b6cc 100644 --- a/c++/src/H5FaccProp.cpp +++ b/c++/src/H5FaccProp.cpp @@ -241,6 +241,47 @@ void FileAccPropList::getCore (size_t& increment, hbool_t& backing_store) const } //-------------------------------------------------------------------------- +// Function: FileAccPropList::setCoreWriteTracking +///\brief Modifies core driver write tracking properties on this file +/// access property list. +///\param is_enabled - IN: Whether the write tracking feature should +/// be enabled or not. +///\param page_size - IN: Sets the page size used with the write tracking +/// feature. When set to a value greater than 1, this allows +/// page-sized aggregation of tracked writes. +///\exception H5::PropListIException +///\par Description +/// For more details on the use of the write tracking feature, refer to +/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetCoreWriteTracking +// Programmer: Dana Robinson - Fall 2016 +//-------------------------------------------------------------------------- +void FileAccPropList::setCoreWriteTracking (hbool_t is_enabled, size_t page_size) const +{ + herr_t ret_value = H5Pset_core_write_tracking (id, is_enabled, page_size); + if (ret_value < 0) + { + throw PropListIException ("FileAccPropList::setCoreWriteTracking", "H5Pset_core_write_tracking failed"); + } +} + +//-------------------------------------------------------------------------- +// Function: FileAccPropList::getCoreWriteTracking +///\brief Queries core file driver write tracking properties. +///\param is_enabled - OUT: Whether or not the write tracking feature is +/// enabled. +///\param page_size - OUT: The page size used when aggregating tracked writes. +///\exception H5::PropListIException +// Programmer: Dana Robinson - Fall 2016 +//-------------------------------------------------------------------------- +void FileAccPropList::getCoreWriteTracking (hbool_t& is_enabled, size_t& page_size) const +{ + herr_t ret_value = H5Pget_core_write_tracking(id, &is_enabled, &page_size); + if( ret_value < 0 ) + { + throw PropListIException("FileAccPropList::getCoreWriteTracking", "H5Pget_core_write_tracking failed"); + } +} +//-------------------------------------------------------------------------- // Function: FileAccPropList::setFamily ///\brief Sets this file access property list to use the family driver. ///\param memb_size - IN: Size in bytes of each file member diff --git a/c++/src/H5FaccProp.h b/c++/src/H5FaccProp.h index 831488c..1020c46 100644 --- a/c++/src/H5FaccProp.h +++ b/c++/src/H5FaccProp.h @@ -58,6 +58,12 @@ class H5_DLLCPP FileAccPropList : public PropList { // Queries H5FD_CORE driver properties. void getCore (size_t& increment, hbool_t& backing_store) const; + // Sets write tracking for the core driver. + void setCoreWriteTracking (hbool_t is_enabled, size_t page_size) const; + + // Queries the core driver write tracking property. + void getCoreWriteTracking (hbool_t& is_enabled, size_t& page_size) const; + // Sets this file access properties list to the family driver. void setFamily( hsize_t memb_size, const FileAccPropList& memb_plist ) const; diff --git a/c++/test/tfile.cpp b/c++/test/tfile.cpp index 0eabfb9..f322ff7 100644 --- a/c++/test/tfile.cpp +++ b/c++/test/tfile.cpp @@ -565,7 +565,7 @@ static void test_file_attribute() dattr.write(PredType::NATIVE_INT, dattr_data); // Test flushing out the data from the attribute object - dattr.flush(H5F_SCOPE_GLOBAL); + dattr.flush(H5F_SCOPE_GLOBAL); // Get and verify the number of all objects in the file // Current: 1 file, 2 file attr, 1 ds, and 1 ds attr. -- cgit v0.12