openPMD-api
Public Types | Public Member Functions | Public Attributes | List of all members
openPMD::detail::BufferedActions Struct Reference
Collaboration diagram for openPMD::detail::BufferedActions:
Collaboration graph
[legend]

Public Types

using AttributeMap_t = std::map< std::string, adios2::Params >
 

Public Member Functions

 BufferedActions (BufferedActions const &)=delete
 
 BufferedActions (ADIOS2IOHandlerImpl &impl, InvalidatableFile file)
 
void finalize ()
 Implementation of destructor, will only run once.
 
adios2::Engine & getEngine ()
 
adios2::Engine & requireActiveStep ()
 
template<typename BA >
void enqueue (BA &&ba)
 
template<typename BA >
void enqueue (BA &&ba, decltype(m_buffer) &)
 
template<typename F >
void flush (F &&performPutsGets, bool flushUnconditionally)
 Flush deferred IO actions. More...
 
void flush ()
 Overload of flush() that uses adios2::Engine::Perform(Puts|Gets) and does not flush unconditionally.
 
AdvanceStatus advance (AdvanceMode mode)
 Begin or end an ADIOS step. More...
 
void drop ()
 
AttributeMap_t const & availableAttributes ()
 
std::vector< std::string > availableAttributesPrefixed (std::string const &prefix)
 
void invalidateAttributesMap ()
 
AttributeMap_t const & availableVariables ()
 
std::vector< std::string > availableVariablesPrefixed (std::string const &prefix)
 
void invalidateVariablesMap ()
 

Public Attributes

std::string m_file
 The full path to the file created on disk, including the containing directory and the file extension, as determined by ADIOS2IOHandlerImpl::fileSuffix(). More...
 
std::string const m_IOName
 ADIOS requires giving names to instances of adios2::IO. More...
 
adios2::ADIOS & m_ADIOS
 
adios2::IO m_IO
 
std::vector< std::unique_ptr< BufferedAction > > m_buffer
 
adios2::Mode m_mode
 
detail::WriteDataset const m_writeDataset
 
detail::DatasetReader const m_readDataset
 
detail::AttributeReader const m_attributeReader
 
std::set< std::string > uncommittedAttributes
 
bool optimizeAttributesStreaming = false
 

Member Function Documentation

◆ advance()

AdvanceStatus openPMD::detail::BufferedActions::advance ( AdvanceMode  mode)

Begin or end an ADIOS step.

Parameters
modeWhether to begin or end a step.
Returns
AdvanceStatus

◆ flush()

template<typename F >
void openPMD::detail::BufferedActions::flush ( F &&  performPutsGets,
bool  flushUnconditionally 
)

Flush deferred IO actions.

Parameters
performPutsGetsA functor that takes as parameters (1) *this and (2) the ADIOS2 engine. Its task is to ensure that ADIOS2 performs Put/Get operations. Several options for this:
  • adios2::Engine::EndStep
  • adios2::Engine::Perform(Puts|Gets)
  • adios2::Engine::Close
flushUnconditionallyWhether to run the functor even if no deferred IO tasks had been queued.

Member Data Documentation

◆ m_file

std::string openPMD::detail::BufferedActions::m_file

The full path to the file created on disk, including the containing directory and the file extension, as determined by ADIOS2IOHandlerImpl::fileSuffix().

(Meaning, in case of the SST engine, no file suffix since the SST engine automatically adds its suffix unconditionally)

◆ m_IOName

std::string const openPMD::detail::BufferedActions::m_IOName

ADIOS requires giving names to instances of adios2::IO.

We make them different from the actual file name, because of the possible following workflow:

  1. create file foo.bp -> would create IO object named foo.bp
  2. delete that file (let's ignore that we don't support deletion yet and call it preplanning)
  3. create file foo.bp a second time -> would create another IO object named foo.bp -> craash

So, we just give out names based on a counter for IO objects. Hence, next to the actual file name, also store the name for the IO.


The documentation for this struct was generated from the following files: