Skip to content
Snippets Groups Projects
Method.cpp 1.51 KiB
Newer Older
wfg's avatar
wfg committed
/*
 * Method.cpp
 *
 *  Created on: Jan 6, 2017
 *      Author: wfg
 */


#include "core/Method.h"
#include "functions/adiosFunctions.h"


namespace adios
{


Method::Method( const std::string name, const bool debugMode ):
    m_Name{ name },
wfg's avatar
wfg committed
    m_DebugMode{ debugMode }
{
    // m_Type can stay empty (forcing the choice of the default engine)
    m_nThreads = 1;
}
wfg's avatar
wfg committed

Method::~Method( )
{ }
bool Method::isUserDefined()
{
    return false; //TODO: check if XML has the method defined
}

void Method::SetEngine( const std::string type )
{
    m_Type = type;
}

void Method::AllowThreads( const int nThreads )
{
    if (nThreads > 1)
        m_nThreads = nThreads;
    else
        m_nThreads = 1;
}

wfg's avatar
wfg committed
//PRIVATE Functions
void Method::AddTransportParameters( const std::string type, const std::vector<std::string>& parameters )
wfg's avatar
wfg committed
{
    if( m_DebugMode == true )
    {
        if( type.empty() || type.find("=") != type.npos )
            throw std::invalid_argument( "ERROR: first argument in AddTransport must be a single word for transport\n" );
    }

wfg's avatar
wfg committed
    std::map<std::string, std::string> mapParameters = BuildParametersMap( parameters, m_DebugMode );
    if( m_DebugMode == true )
    {
wfg's avatar
wfg committed
        if( mapParameters.count("transport") == 1 )
wfg's avatar
wfg committed
            std::invalid_argument( "ERROR: transport can't be redefined with \"transport=type\", "
                                   "type must be the first argument\n" );
    }

    mapParameters["transport"] = type;
wfg's avatar
wfg committed
    m_TransportParameters.push_back( mapParameters );
wfg's avatar
wfg committed

wfg's avatar
wfg committed

} //end namespace