OpenM++ runtime library (libopenm)
Loading...
Searching...
No Matches
runController.h
Go to the documentation of this file.
1
5// Copyright (c) 2013-2015 OpenM++
6// This code is licensed under the MIT license (see LICENSE.txt for details)
7
8#ifndef RUN_CTRL_H
9#define RUN_CTRL_H
10
11#include <fstream>
12#include "metaLoader.h"
13#include "dbValue.h"
14
15using namespace std;
16
17static constexpr size_t MinSizeToSaveMicrodata = 128 * 1024;
18static constexpr size_t MaxSizeToSaveMicrodata = 2 * 1024 * 1024;
20namespace openm
21{
23 class RunController : public MetaLoader, public IRunBase
24 {
25 public:
28
31
34
37
39 static RunController * create(const ArgReader & i_argOpts, bool i_isMpiUsed, IDbExec * i_dbExec, IMsgExec * i_msgExec);
40
42 virtual ~RunController(void) noexcept = 0;
43
45 virtual int totalSubCount(void) const noexcept override { return subValueCount; }
46
48 int parameterIdByName(const char * i_name) const override { return MetaLoader::parameterIdByName(i_name); };
49
51 int parameterSubCount(int i_paramId) const override { return MetaLoader::parameterSubCount(i_paramId); }
52
54 int parameterSelfSubCount(int i_paramId) const override
55 {
56 return parameterSubCount(i_paramId) > 1 ? selfSubCount : 1;
57 }
58
60 int parameterSubValueIndex(int i_paramId, int i_subId) const override
61 {
62 return (parameterSubCount(i_paramId) > 1 && subFirstId <= i_subId && i_subId < subFirstId + selfSubCount) ?
63 i_subId - subFirstId :
64 0;
65 }
66
68 bool isUseSubValue(int i_subId) const override
69 {
70 return subFirstId <= i_subId && i_subId < subFirstId + selfSubCount;
71 }
72
74 bool isTableSuppressed(const char * i_name) const override {
75 return isSuppressed(i_name);
76 }
77
79 bool isTableSuppressed(int i_tableId) const override {
80 return isSuppressed(i_tableId);
81 }
82
84 RunStateHolder & runStateStore(void) { return runStateHolder; }
85
87 virtual int nextRun(void) = 0;
88
90 virtual void shutdownRun(int i_runId) = 0;
91
93 virtual void shutdownWaitAll(void) = 0;
94
96 virtual void shutdownOnExit(ModelStatus i_status) = 0;
97
99 virtual bool childExchange(void) = 0;
100
102 virtual void writeAccumulators(
103 const RunOptions & i_runOpts,
104 bool i_isLastTable,
105 const char * i_name,
106 size_t i_size,
107 forward_list<unique_ptr<double[]> > & io_accValues
108 ) = 0;
109
111 bool isOptionExist(const char * i_key) const noexcept override {
112 return metaStore->runOptionTable ? metaStore->runOptionTable->isExist(currentRunId(), i_key) : false;
113 }
114
116 string strOption(const char * i_key, const string & i_default = "") const noexcept override {
117 return metaStore->runOptionTable ? metaStore->runOptionTable->strValue(currentRunId(), i_key, i_default) : i_default;
118 }
119
121 bool boolOption(const char * i_key) const noexcept override {
122 return metaStore->runOptionTable ? metaStore->runOptionTable->boolValue(currentRunId(), i_key) : false;
123 }
124
131 int boolOptionToInt(const char * i_key) const noexcept override {
132 return metaStore->runOptionTable ? metaStore->runOptionTable->boolValueToInt(currentRunId(), i_key) : -1;
133 }
134
136 int intOption(const char * i_key, int i_default) const noexcept override {
137 return metaStore->runOptionTable ? metaStore->runOptionTable->intValue(currentRunId(), i_key, i_default) : i_default;
138 }
139
141 long long longOption(const char * i_key, long long i_default) const noexcept override {
142 return metaStore->runOptionTable ? metaStore->runOptionTable->longValue(currentRunId(), i_key, i_default) : i_default;
143 }
144
146 double doubleOption(const char * i_key, double i_default) const noexcept override {
147 return metaStore->runOptionTable ? metaStore->runOptionTable->doubleValue(currentRunId(), i_key, i_default) : i_default;
148 }
149
151 vector<pair<string, string>> allOptions(void) const noexcept override;
152
155 {
156 int attrId;
157 int idxOf;
158 ptrdiff_t rowOffset = 0;
159 unique_ptr<IValueFormatter> fmtValue;
160 unique_ptr<IValueFormatter> sqlFmtValue;
162 EntityAttrItem(int i_attrId, int i_index) : attrId(i_attrId), idxOf(i_index) {}
163 };
164
167 {
168 int entityId;
169 vector<EntityAttrItem> attrs;
170 string genDigest;
171 int genHid = 0;
173 string csvHdr;
174 size_t rowSize = 0;
176 vector<DbValueSetter> rowSetter;
177 vector<const type_info *> rowTypes;
179 EntityItem(int i_entityId) : entityId(i_entityId) {}
180 };
181
189 void pushDbMicrodata(int i_runId, int i_entityKind, uint64_t i_microdataKey, const void * i_entityThis);
190
199 void writeCsvMicrodata(int i_entityKind, uint64_t i_microdataKey, int i_eventId, bool i_isSameEntity, const void * i_entityThis, string & io_line);
200
202 const string csvHeaderMicrodata(int i_entityKind) const;
203
205 void makeCsvLineMicrodata(const EntityItem & i_entityItem, uint64_t i_microdataKey, int i_eventId, bool i_isSameEntity, const void * i_entityThis, string & io_line) const;
206
208 tuple<bool, const RunController::EntityItem &> findEntityItem(int i_entityKind) const;
209
211 bool isEntityEventInFilter(int i_entityKind, uint64_t i_microdataKey, int i_eventId) const;
212
213 protected:
215 RunController(const ArgReader & i_argStore) : MetaLoader(i_argStore),
216 subFirstId(0),
217 selfSubCount(0),
218 processCount(1),
219 processRank(0)
220 { }
221
223 virtual void init(void) = 0;
224
226 virtual int currentRunId(void) const noexcept = 0;
227
229 int createTaskRun(int i_taskId, IDbExec * i_dbExec);
230
232 int findTask(IDbExec * i_dbExec);
233
235 tuple<int, int, ModelStatus> createNewRun(int i_taskRunId, bool i_isWaitTaskRun, IDbExec * i_dbExec);
236
238 void doShutdownOnExit(ModelStatus i_status, int i_runId, int i_taskRunId, IDbExec * i_dbExec);
239
241 void doShutdownRun(int i_runId, int i_taskRunId, IDbExec * i_dbExec);
242
244 void doShutdownAll(int i_taskRunId, IDbExec * i_dbExec);
245
248 int i_runId,
249 IDbExec * i_dbExec,
250 const RunOptions & i_runOpts,
251 const char * i_name,
252 size_t i_size,
253 forward_list<unique_ptr<double[]> > & io_accValues
254 ) const;
255
257 void updateRestartSubValueId(int i_runId, IDbExec * i_dbExec, int i_subRestart) const;
258
260 void updateRunState(IDbExec * i_dbExec, const map<pair<int, int>, RunState> i_updated) const;
261
262 // microdata entities to write into database or csv
263 map<int, EntityItem> entityMap;
264 vector<int> entityIds; // sorted microdata entity id's
265
274 map<int, list<unique_ptr<uint8_t[]>>> pullDbMicrodata(bool i_isNow = false);
275
278 {
280 virtual uint8_t * toFirst(void) = 0;
281
283 virtual uint8_t * toNext(void) = 0;
284 };
285
288 {
290 ListFirstNext(list<unique_ptr<uint8_t[]>>::const_iterator i_begin, list<unique_ptr<uint8_t[]>>::const_iterator i_end) {
291 beginIt = i_begin;
292 endIt = i_end;
293 rowIt = i_begin;
294 }
295
297 virtual uint8_t * toFirst(void) override
298 {
299 rowIt = beginIt;
300 return rowIt != endIt ? rowIt->get() : nullptr;
301 }
302
304 virtual uint8_t * toNext(void) override
305 {
306 if (rowIt == endIt) return nullptr;
307
308 ++rowIt;
309 return rowIt != endIt ? rowIt->get() : nullptr;
310 }
311 private:
312 list<unique_ptr<uint8_t[]>>::const_iterator beginIt; // first row
313 list<unique_ptr<uint8_t[]>>::const_iterator endIt; // after last row
314 list<unique_ptr<uint8_t[]>>::const_iterator rowIt; // current row
315 };
316
319 {
321 BytesFirstNext(size_t i_rowCount, size_t i_rowSize, uint8_t * i_rows) : count(i_rowCount), size(i_rowSize) {
322 totalSize = size * count;
323 pRows = i_rows;
324 rowNow = 0;
325 }
326
328 virtual uint8_t * toFirst(void) override
329 {
330 if (pRows == nullptr || count <= 0 || size <= 0) return nullptr;
331
332 rowNow = 0;
333 return size <= totalSize ? pRows : nullptr;
334 }
335
337 virtual uint8_t * toNext(void) override
338 {
339 if (pRows == nullptr || count <= 0 || size <= 0 || rowNow >= count) return nullptr;
340
341 rowNow++;
342 return (rowNow + 1) * size <= totalSize ? pRows + (rowNow * size) : nullptr;
343 }
344 private:
345 size_t count = 0; // rows count
346 size_t size = 0; // row size in bytes
347 size_t totalSize = 0; // total size in bytes
348 uint8_t * pRows; // array of bytes [count, size]
349 size_t rowNow = 0; // current row index
350 };
351
353 size_t doDbMicrodata(IDbExec * i_dbExec, int i_entityId, IRowsFirstNext & i_entityMdRows);
354
356 size_t doDbMicrodataSql(IDbExec * i_dbExec, const map<int, list<unique_ptr<uint8_t[]>>> & i_entityMdRows);
357
359 void openCsvMicrodata(void);
360
361 private:
363 RunStateHolder runStateHolder;
364
366 tuple<int, string, bool, bool> findWorkset(int i_setId, IDbExec * i_dbExec);
367
369 int findBaseRun(IDbExec * i_dbExec);
370
372 void createRunOptions(int i_runId, int i_setId, const string & i_setName, int i_baseRunId, int i_taskRunId, IDbExec * i_dbExec) const;
373
374 // copy input parameters from "base" run and working set into new run id
375 void createRunParameters(int i_runId, int i_setId, bool i_isWsDefault, bool i_isReadonlyWsDefault, int i_baseRunId, IDbExec * i_dbExec) const;
376
377 // cretate run description and notes using run options or by copy it from workset text
378 void createRunText(int i_runId, int i_setId, IDbExec * i_dbExec) const;
379
380 // insert run entity metadata and create run entity database tables
381 void createRunEntityTables(IDbExec* i_dbExec);
382
383 // insert run entity rows for all entities in that model run
384 void insertRunEntity(int i_runId, IDbExec * i_dbExec);
385
386 // calculate entity generation digest: based on entity digest, attributes id, name, type digest
387 const string makeEntityGenDigest(const EntityDicRow * i_entRow, const vector<EntityAttrRow> i_attrRows) const;
388
390 void writeOutputValues(int i_runId, IDbExec * i_dbExec) const;
391
393 void writeMicrodataDigest(int i_runId, IDbExec * i_dbExec) const;
394
395 // check sub-value id's and count: sub id must be zero in range [0, sub count -1] and count must be equal to parameter size
396 void checkParamSubCounts(int i_runId, int i_subCount, const ParamDicRow & i_paramRow, IDbExec * i_dbExec) const;
397
398 // make part of where clause to select sub_id's
399 const string makeWhereSubId(const MetaLoader::ParamSubOpts & i_subOpts, int i_defaultSubId) const;
400
401 // make part of select columns list to map source sub id's to run parameter sub_id's
402 const string mapSelectedSubId(const MetaLoader::ParamSubOpts & i_subOpts) const;
403
404 // return parameter sub-value options by parameter id
405 const MetaLoader::ParamSubOpts subOptsById(const ParamDicRow & i_paramRow, int i_subCount, int i_defaultSubId) const;
406
408 RunImportOpts findImportRun(const string & i_modelName, const ImportOpts & i_importOpts, const IModelDicTable * i_mainModelTable, IDbExec * i_dbExec) const;
409
411 bool importOutputTable(
412 int i_runId,
413 const ParamDicRow & i_paramRow,
414 const ParameterNameSizeItem * i_nameSizeItem,
415 const RunImportOpts & i_riOpts,
416 const ParamImportRow * i_importRow,
417 IDbExec * i_dbExec
418 ) const;
419
421 bool importParameter(
422 int i_runId,
423 const ParamDicRow & i_paramRow,
424 const ParameterNameSizeItem * i_nameSizeItem,
425 const RunImportOpts & i_riOpts,
426 const ParamImportRow * i_importRow,
427 const ParamSubOpts & i_subOpts,
428 IDbExec * i_dbExec
429 ) const;
430
431 // microdata entity to strore in database
432 struct EntityDbItem
433 {
434 int entityId; // entity metadata id
435 //
436 recursive_mutex theMutex; // mutex to lock for db write operations
437 list<unique_ptr<uint8_t[]>> rowLst; // microdata list of rows
438 chrono::system_clock::time_point lastSaveTime = chrono::system_clock::time_point::min(); // last time of save
439 };
440 map<int, EntityDbItem> entityDbMap; // map entity id to database microdata buffer
441
446 tuple<bool, size_t> statusDbMicrodata(chrono::system_clock::time_point i_nowTime, EntityDbItem & i_entityDbItem);
447
449 list<unique_ptr<uint8_t[]>> && moveDbMicrodata(chrono::system_clock::time_point i_nowTime, EntityDbItem & io_entityDbItem);
450
451 // microdata entity to write into csv
452 struct EntityCsvItem
453 {
454 int entityId; // entity metadata id
455 string filePath; // if not empty then microdata csv file path
456 //
457 recursive_mutex theMutex; // mutex to lock for csv write operations
458 bool isReady; // if true then csv output file open and ready to use
459 ofstream csvSt; // csv output stream
460 };
461 map<int, EntityCsvItem> entityCsvMap; // map entity id to microdata entity csv file
462
463 // initialize microdata entity writing
464 void initMicrodata(void);
465
467 void closeCsvMicrodata(void) noexcept;
468
470 void writeCsvLineMicrodata(EntityCsvItem & io_entityCsvItem, const string & i_line);
471
472 private:
473 RunController(const RunController & i_runCtrl) = delete;
474 RunController & operator=(const RunController & i_runCtrl) = delete;
475 };
476}
477
478#endif // RUN_CTRL_H
database connection wrapper to execute sql commands.
Definition dbExec.h:21
public interface for message passing
Definition msg.h:138
model metadata loader: read and broadcast metadata and run options.
Definition metaLoader.h:251
int parameterSubCount(int i_paramId) const
return sub-values count by parameter id
Definition metaLoader.h:275
bool isSuppressed(const char *i_name) const
check by name if output table suppressed
Definition metaLoader.h:287
int subValueCount
total number of sub-values
Definition metaLoader.h:257
int parameterIdByName(const char *i_name) const
return index of parameter by name
Definition metaLoader.cpp:116
run controller: create new model run(s) and support data exchange.
Definition runController.h:24
long long longOption(const char *i_key, long long i_default) const noexcept override
return long value of run option by i_key or default if not found or can not be converted to long.
Definition runController.h:141
void updateRunState(IDbExec *i_dbExec, const map< pair< int, int >, RunState > i_updated) const
merge updated sub-values run statue into database
Definition runController.cpp:353
int parameterSelfSubCount(int i_paramId) const override
number of parameter sub-values for current process
Definition runController.h:54
virtual ~RunController(void) noexcept=0
last cleanup
Definition runController.cpp:21
virtual void writeAccumulators(const RunOptions &i_runOpts, bool i_isLastTable, const char *i_name, size_t i_size, forward_list< unique_ptr< double[]> > &io_accValues)=0
write output table accumulators or send data to root process.
virtual int currentRunId(void) const noexcept=0
get run id of the current model run.
const string csvHeaderMicrodata(int i_entityKind) const
return microdata entity csv file header
Definition runControllerMicrodata.cpp:882
virtual void shutdownOnExit(ModelStatus i_status)=0
model process shutdown if exiting without completion (ie: exit on error).
int parameterIdByName(const char *i_name) const override
return index of parameter by name
Definition runController.h:48
int createTaskRun(int i_taskId, IDbExec *i_dbExec)
create task run entry in database
Definition runControllerNewRun.cpp:16
bool isUseSubValue(int i_subId) const override
return true if sub-value used by current process
Definition runController.h:68
int findTask(IDbExec *i_dbExec)
find modeling task, if specified
Definition runControllerNewRun.cpp:57
int parameterSubCount(int i_paramId) const override
number of parameter sub-values for current model run
Definition runController.h:51
bool isTableSuppressed(const char *i_name) const override
check by name if output table suppressed.
Definition runController.h:74
virtual void init(void)=0
get number of sub-values, read and broadcast metadata.
tuple< bool, const RunController::EntityItem & > findEntityItem(int i_entityKind) const
check if any microdata write required for this entity kind
Definition runControllerMicrodata.cpp:83
RunStateHolder & runStateStore(void)
return holder of all sub-values modeling run states
Definition runController.h:84
bool isTableSuppressed(int i_tableId) const override
check by id if output table suppressed.
Definition runController.h:79
string strOption(const char *i_key, const string &i_default="") const noexcept override
return string value of run option by i_key or default value if not found.
Definition runController.h:116
virtual void shutdownWaitAll(void)=0
model process shutdown: cleanup resources.
void openCsvMicrodata(void)
create microdata CSV files for new model run.
Definition runControllerMicrodata.cpp:889
void writeCsvMicrodata(int i_entityKind, uint64_t i_microdataKey, int i_eventId, bool i_isSameEntity, const void *i_entityThis, string &io_line)
write microdata into the CSV file.
Definition runControllerMicrodata.cpp:853
int selfSubCount
number of sub-values for current process
Definition runController.h:30
virtual int nextRun(void)=0
create new run and input parameters in database.
static RunController * create(const ArgReader &i_argOpts, bool i_isMpiUsed, IDbExec *i_dbExec, IMsgExec *i_msgExec)
create run controller, load metadata tables and broadcast it to all modeling processes.
Definition runController.cpp:24
int intOption(const char *i_key, int i_default) const noexcept override
return int value of run option by i_key or default if not found or can not be converted to int.
Definition runController.h:136
bool isOptionExist(const char *i_key) const noexcept override
return true if run option found by i_key in run_option table for the current run id.
Definition runController.h:111
bool boolOption(const char *i_key) const noexcept override
return boolean value of run option by i_key or false if not found or value is not "yes",...
Definition runController.h:121
tuple< int, int, ModelStatus > createNewRun(int i_taskRunId, bool i_isWaitTaskRun, IDbExec *i_dbExec)
create new run, create input parameters and run options for input working sets
Definition runControllerNewRun.cpp:89
virtual void shutdownRun(int i_runId)=0
model run shutdown: save results and update run status.
int processCount
number of modeling processes: MPI world size
Definition runController.h:33
void pushDbMicrodata(int i_runId, int i_entityKind, uint64_t i_microdataKey, const void *i_entityThis)
push microdata database rows into the buffer.
Definition runControllerMicrodata.cpp:318
void updateRestartSubValueId(int i_runId, IDbExec *i_dbExec, int i_subRestart) const
update sub-value index to restart the run
Definition runController.cpp:339
virtual bool childExchange(void)=0
exchange between root and child processes and threads.
int parameterSubValueIndex(int i_paramId, int i_subId) const override
return index of parameter sub-value in the storage array of sub-values
Definition runController.h:60
void makeCsvLineMicrodata(const EntityItem &i_entityItem, uint64_t i_microdataKey, int i_eventId, bool i_isSameEntity, const void *i_entityThis, string &io_line) const
make attributes csv line by converting attribute values into string
Definition runControllerMicrodata.cpp:954
double doubleOption(const char *i_key, double i_default) const noexcept override
return double value of run option by i_key or default if not found or can not be converted to double.
Definition runController.h:146
virtual int totalSubCount(void) const noexcept override
total number of sub-values
Definition runController.h:45
void doShutdownAll(int i_taskRunId, IDbExec *i_dbExec)
implementation model process shutdown.
Definition runController.cpp:127
void doShutdownOnExit(ModelStatus i_status, int i_runId, int i_taskRunId, IDbExec *i_dbExec)
impelementation of model process shutdown if exiting without completion.
Definition runController.cpp:66
void doWriteAccumulators(int i_runId, IDbExec *i_dbExec, const RunOptions &i_runOpts, const char *i_name, size_t i_size, forward_list< unique_ptr< double[]> > &io_accValues) const
write output table accumulators if table is not suppressed.
Definition runController.cpp:297
void doShutdownRun(int i_runId, int i_taskRunId, IDbExec *i_dbExec)
implementation of model run shutdown.
Definition runController.cpp:157
RunController(const ArgReader &i_argStore)
create run controller
Definition runController.h:215
bool isEntityEventInFilter(int i_entityKind, uint64_t i_microdataKey, int i_eventId) const
retrun true if entity event id is matching events filter or if there no filter and all events are all...
Definition runControllerMicrodata.cpp:997
map< int, list< unique_ptr< uint8_t[]> > > pullDbMicrodata(bool i_isNow=false)
pull microdata database rows from the buffer.
Definition runControllerMicrodata.cpp:359
int boolOptionToInt(const char *i_key) const noexcept override
search for boolean value of run option by i_key and return one of: return 1 if key found and value i...
Definition runController.h:131
size_t doDbMicrodata(IDbExec *i_dbExec, int i_entityId, IRowsFirstNext &i_entityMdRows)
write entity microdata rows into database and return inserted rows count
Definition runControllerMicrodata.cpp:422
int processRank
modeling processes rank: MPI rank
Definition runController.h:36
vector< pair< string, string > > allOptions(void) const noexcept override
return a copy of all run options as [key, value] pairs, ordered by key.
Definition runControllerNewRun.cpp:348
size_t doDbMicrodataSql(IDbExec *i_dbExec, const map< int, list< unique_ptr< uint8_t[]> > > &i_entityMdRows)
write microdata into database using sql insert literal and return inserted rows count
Definition runControllerMicrodata.cpp:515
int subFirstId
sub-value staring index for current modeling process
Definition runController.h:27
sub-value run state for all modeling threads, identified by (run id, sub-value id) pair
Definition modelRunState.h:61
OpenM++ data library: db value classes access value rows: input parameter, accumulator or expression ...
OpenM++ modeling library: model metadata loader to read and broadcast metadata and run options.
openM++ namespace
Definition log.h:32
ModelStatus
modeling job status
Definition omModelRunState.h:43
arguments reader to get runtime arguments from command line and ini-file.
Definition argReader.h:56
entity_dic table row.
Definition dbMetaRow.h:1200
model_dic table public interface.
Definition dbMetaTable.h:175
public interface to initialize model run and input parameters
Definition omModel.h:112
Definition metaLoader.h:355
parameter_dic join to model_parameter_dic table row.
Definition dbMetaRow.h:473
parameter_dic join to model_parameter_import table row.
Definition dbMetaRow.h:547
model input parameter name, type and size
Definition omModel.h:193
array of bytes rows wrapped into IRowsFirstNext interface
Definition runController.h:319
BytesFirstNext(size_t i_rowCount, size_t i_rowSize, uint8_t *i_rows)
create interface to opaque list of bytes rows
Definition runController.h:321
virtual uint8_t * toNext(void) override
move pointer to the next row, return NULL at the end of rows.
Definition runController.h:337
virtual uint8_t * toFirst(void) override
move pointer to the first row, return NULL if row list is empty.
Definition runController.h:328
entity attribute item to write microdata into database or csv file
Definition runController.h:155
unique_ptr< IValueFormatter > fmtValue
attribute value offset in database row buffer
Definition runController.h:159
int idxOf
entity attribute metadata id
Definition runController.h:157
ptrdiff_t rowOffset
attribute index in EntityNameSizeArr
Definition runController.h:158
unique_ptr< IValueFormatter > sqlFmtValue
attribute value to string converter for csv output
Definition runController.h:160
EntityAttrItem(int i_attrId, int i_index)
attribute value to string converter for database insert
Definition runController.h:162
entity item to write microdata into database or csv file
Definition runController.h:167
string sqlInsPrefix
database row size
Definition runController.h:175
string csvHdr
db microdata table name
Definition runController.h:173
string dbMicrodataTable
entity generation unique id, unique in that database
Definition runController.h:172
string genDigest
entity attributes
Definition runController.h:170
int genHid
entity generation digest
Definition runController.h:171
vector< DbValueSetter > rowSetter
microdata sql statement prefix
Definition runController.h:176
vector< EntityAttrItem > attrs
entity metadata id
Definition runController.h:169
EntityItem(int i_entityId)
column types of insert statement
Definition runController.h:179
vector< const type_info * > rowTypes
function helpers to set column value of insert statement
Definition runController.h:177
size_t rowSize
microdata csv header line
Definition runController.h:174
interface to opaque list of bytes rows
Definition runController.h:278
virtual uint8_t * toNext(void)=0
move pointer to the next row, return NULL at the end of rows.
virtual uint8_t * toFirst(void)=0
move pointer to the first row, return NULL if row list is empty.
list of bytes rows wrapped into IRowsFirstNext interface
Definition runController.h:288
virtual uint8_t * toNext(void) override
move pointer to the next row, return NULL at the end of rows.
Definition runController.h:304
virtual uint8_t * toFirst(void) override
move pointer to the first row, return NULL if row list is empty.
Definition runController.h:297
ListFirstNext(list< unique_ptr< uint8_t[]> >::const_iterator i_begin, list< unique_ptr< uint8_t[]> >::const_iterator i_end)
create interface to opaque list of bytes rows
Definition runController.h:290
basic model run options
Definition omModel.h:26
model run state data: status, progress, update times
Definition omModelRunState.h:93