Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
* 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}, m_DebugMode{debugMode}
{
// m_Type can stay empty (forcing the choice of the default engine)
m_nThreads = 1;
}
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;
}
// PRIVATE Functions
void Method::AddTransportParameters(const std::string type,
const std::vector<std::string> ¶meters)
{
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");
}
std::map<std::string, std::string> mapParameters =
BuildParametersMap(parameters, m_DebugMode);
if (m_DebugMode == true)
{
if (mapParameters.count("transport") == 1)
std::invalid_argument(
"ERROR: transport can't be redefined with \"transport=type\", "
"type must be the first argument\n");
}
mapParameters["transport"] = type;
m_TransportParameters.push_back(mapParameters);
}
} // end namespace