Interface for communicating between logical and physically persistent data. More...
#include <AbstractIOHandler.hpp>
Public Member Functions | |
| template<typename TracingJSON> | |
| AbstractIOHandler (std::optional< std::unique_ptr< AbstractIOHandler > > initialize_from, std::string path, Access at, TracingJSON &&jsonConfig, MPI_Comm) | |
| template<typename TracingJSON> | |
| AbstractIOHandler (std::optional< std::unique_ptr< AbstractIOHandler > > initialize_from, std::string path, Access at, TracingJSON &&jsonConfig) | |
| AbstractIOHandler (std::optional< std::unique_ptr< AbstractIOHandler > >) | |
| AbstractIOHandler (AbstractIOHandler const &)=delete | |
| AbstractIOHandler (AbstractIOHandler &&) noexcept(false) | |
| AbstractIOHandler & | operator= (AbstractIOHandler const &)=delete |
| AbstractIOHandler & | operator= (AbstractIOHandler &&) noexcept |
| virtual void | enqueue (IOTask const &iotask) |
| Add provided task to queue according to FIFO. | |
| std::future< void > | flush (internal::FlushParams const &) |
| Process operations in queue according to FIFO. | |
| virtual std::future< void > | flush (internal::ParsedFlushParams &)=0 |
| Process operations in queue according to FIFO. | |
| virtual std::string | backendName () const =0 |
| The currently used backend. | |
| virtual bool | fullSupportForVariableBasedEncoding () const |
| template<> | |
| AbstractIOHandler (std::optional< std::unique_ptr< AbstractIOHandler > > initialize_from, std::string path, Access at, json::TracingJSON &&jsonConfig, MPI_Comm) | |
| template<> | |
| AbstractIOHandler (std::optional< std::unique_ptr< AbstractIOHandler > > initialize_from, std::string path, Access at, json::TracingJSON &&jsonConfig) | |
Public Attributes | |
| std::string | directory |
| Access | m_backendAccess |
| Access | m_frontendAccess |
| std::queue< IOTask > | m_work |
| bool | m_lastFlushSuccessful = false |
| This is to avoid that the destructor tries flushing again if an error happened. | |
| internal::SeriesStatus | m_seriesStatus = internal::SeriesStatus::Default |
| IterationEncoding | m_encoding = IterationEncoding::groupBased |
| OpenpmdStandard | m_standard = auxiliary::parseStandard(getStandardDefault()) |
| bool | m_verify_homogeneous_extents = true |
Protected Attributes | |
| std::unique_ptr< json::JsonMatcher > | jsonMatcher |
Friends | |
| class | Series |
| class | ADIOS2IOHandlerImpl |
| class | JSONIOHandlerImpl |
| class | HDF5IOHandlerImpl |
| class | detail::ADIOS2File |
Interface for communicating between logical and physically persistent data.
Input and output operations are channeled through a task queue that is managed by the concrete class implementing this handler. The queue of pending operations is only processed on demand. For certain scenarios it is therefore necessary to manually execute all operations by calling AbstractIOHandler::flush().
|
pure virtual |
The currently used backend.
Implemented in openPMD::ADIOS2IOHandler, openPMD::DummyIOHandler, openPMD::HDF5IOHandler, openPMD::JSONIOHandler, and openPMD::ParallelHDF5IOHandler.
|
inlinevirtual |
Add provided task to queue according to FIFO.
| iotask | Task to be executed after all previously enqueued IOTasks complete. |
Reimplemented in openPMD::DummyIOHandler.
| std::future< void > openPMD::AbstractIOHandler::flush | ( | internal::FlushParams const & | params | ) |
Process operations in queue according to FIFO.
|
pure virtual |
Process operations in queue according to FIFO.
Implemented in openPMD::ADIOS2IOHandler, openPMD::DummyIOHandler, openPMD::HDF5IOHandler, openPMD::JSONIOHandler, and openPMD::ParallelHDF5IOHandler.
| bool openPMD::AbstractIOHandler::m_lastFlushSuccessful = false |
This is to avoid that the destructor tries flushing again if an error happened.
Otherwise, this would lead to confusing error messages. Initialized as false, set to true after successful construction. If flushing results in an error, set this back to false. The destructor will only attempt flushing again if this is true.