Skip to content
Snippets Groups Projects
Heap.h 1.08 KiB
Newer Older
wfg's avatar
wfg committed
/*
 * Heap.h
 *
 *  Created on: Dec 19, 2016
 *      Author: wfg
 */

#ifndef HEAP_H_
#define HEAP_H_

wfg's avatar
wfg committed
/// \cond EXCLUDE_FROM_DOXYGEN
#include <vector>
/// \endcond

wfg's avatar
wfg committed

#include "core/Capsule.h"


namespace adios
{

/**
 * Data and Metadata buffers are allocated in the Heap
wfg's avatar
wfg committed
 */
class Heap : public Capsule
{

public:

    std::vector<char> m_Data; ///< data buffer allocated using the STL in heap memory, default size = 16 Mb
    std::vector<char> m_Metadata; ///< metadata buffer allocated using the STL in heap memory, default size = 100 Kb

wfg's avatar
wfg committed
    /**
     * Unique constructor
     * @param accessMode read, write or append
     * @param rankMPI MPI rank
     * @param debugMode true: extra checks, slower
wfg's avatar
wfg committed
    Heap( const std::string accessMode, const int rankMPI, const bool debugMode = false );
wfg's avatar
wfg committed

    ~Heap( );

    char* GetData( );
    char* GetMetadata( );
wfg's avatar
wfg committed
    std::size_t GetDataSize( ) const;
    std::size_t GetMetadataSize( ) const;

    void ResizeData( const std::size_t size );
    void ResizeMetadata( const std::size_t size );

wfg's avatar
wfg committed
};

wfg's avatar
wfg committed
} //end namespace






#endif /* HEAP_H_ */