PhysiologyEngineThunk.h
1/* Distributed under the Apache License, Version 2.0.
2 See accompanying NOTICE file for details.*/
3
4#pragma once
5
6#include "cdm/CommonDefs.h"
7// CDM Features in use
8#include "cdm/PhysiologyEngine.h"
9#include "cdm/engine/SEEventManager.h"
10#include "cdm/utils/ScopedMutex.h"
11
17{
18public:
19 PhysiologyEngineThunk(const std::string& dataDir = "./");
20 virtual ~PhysiologyEngineThunk();
21
22 virtual void Clear();
23
24 //virtual void SetConfigurationOverride(std::string const& config)=0; // Not Implemented
25
26 bool SerializeFromFile(std::string const& filename, std::string const& data_requests, eSerializationFormat data_requests_format);
27 bool SerializeToFile(std::string const& filename);
28
29 bool SerializeFromString(std::string const& state, std::string const& data_requests, eSerializationFormat format);
30 std::string SerializeToString(eSerializationFormat format);
31
32 bool InitializeEngine(std::string const& patient_configuration, std::string const& data_requests, eSerializationFormat format);
33
34 std::string GetInitialPatient(eSerializationFormat format);
35 std::string GetConditions(eSerializationFormat format);
36
37 void LogToConsole(bool b);
38 void KeepLogMessages(bool keep);// Set this to true if you are going to pull messages from the engine
39 void SetLogFilename(std::string const& logfile);// Set to empty if no log file is wanted
40 std::string PullLogMessages(eSerializationFormat format);
42
43 void KeepEventChanges(bool keep);
44 std::string PullEvents(eSerializationFormat format);
45 std::string PullActiveEvents(eSerializationFormat format);
46 std::string GetPatientAssessment(int type, eSerializationFormat format);
48
49 bool ProcessActions(std::string const& actions, eSerializationFormat format);
50 std::string PullActiveActions(eSerializationFormat format);
51
52 bool AdvanceTimeStep();
53 double GetTimeStep(std::string const& unit);
54
55 size_t DataLength() const;
56 double* PullDataPtr();
57 void PullData(std::vector<double>& data);
58
59 void ForwardDebug(const std::string& msg) override;
60 void ForwardInfo(const std::string& msg) override;
61 void ForwardWarning(const std::string& msg) override;
62 void ForwardError(const std::string& msg) override;
63 void ForwardFatal(const std::string& msg) override;
64
65 void HandleEvent(eEvent type, bool active, const SEScalarTime* time = nullptr) override;
66
67protected:
68 virtual void AllocateEngine() = 0;
69 virtual void SetupDefaultDataRequests();
70 virtual bool SetupRequests();
71
72 std::unique_ptr<PhysiologyEngine> m_engine;
74
75 bool m_keepLogMsgs = false;
76 bool m_keepEventChanges = false;
79
81 std::string m_dataDir;
82 std::vector<const SEEventChange*> m_events;
83 std::vector<const SEActiveEvent*> m_activeEvents;
84 size_t m_length;
85 double* m_requestedData = nullptr;
86 std::vector<double> m_requestedValues;
87};
Definition: Logger.h:133
Definition: Logger.h:60
Definition: PhysiologyEngineThunk.h:17
void SetLogFilename(std::string const &logfile)
Definition: PhysiologyEngineThunk.cpp:189
bool SerializeFromFile(std::string const &filename, std::string const &data_requests, eSerializationFormat data_requests_format)
Definition: PhysiologyEngineThunk.cpp:44
void ForwardWarning(const std::string &msg) override
Definition: PhysiologyEngineThunk.cpp:421
std::string PullActiveActions(eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:303
size_t m_length
Definition: PhysiologyEngineThunk.h:84
std::string m_dataDir
Definition: PhysiologyEngineThunk.h:81
double * m_requestedData
Definition: PhysiologyEngineThunk.h:85
size_t DataLength() const
Definition: PhysiologyEngineThunk.cpp:361
virtual void Clear()
Definition: PhysiologyEngineThunk.cpp:39
virtual bool SetupRequests()
Definition: PhysiologyEngineThunk.cpp:147
std::string GetConditions(eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:174
void SetEventHandler(SEEventHandler *eh)
Definition: PhysiologyEngineThunk.h:47
bool AdvanceTimeStep()
Definition: PhysiologyEngineThunk.cpp:315
bool m_keepLogMsgs
Definition: PhysiologyEngineThunk.h:75
void PullData(std::vector< double > &data)
Definition: PhysiologyEngineThunk.cpp:365
std::vector< const SEEventChange * > m_events
Definition: PhysiologyEngineThunk.h:82
bool ProcessActions(std::string const &actions, eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:267
void HandleEvent(eEvent type, bool active, const SEScalarTime *time=nullptr) override
Definition: PhysiologyEngineThunk.cpp:445
LogMessages m_logMsgs
Definition: PhysiologyEngineThunk.h:80
double * PullDataPtr()
Definition: PhysiologyEngineThunk.cpp:342
std::string PullActiveEvents(eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:217
void KeepLogMessages(bool keep)
Definition: PhysiologyEngineThunk.cpp:185
std::vector< const SEActiveEvent * > m_activeEvents
Definition: PhysiologyEngineThunk.h:83
void ForwardError(const std::string &msg) override
Definition: PhysiologyEngineThunk.cpp:429
void ForwardDebug(const std::string &msg) override
Definition: PhysiologyEngineThunk.cpp:405
std::unique_ptr< PhysiologyEngine > m_engine
Definition: PhysiologyEngineThunk.h:72
SESubstanceManager * m_subMgr
Definition: PhysiologyEngineThunk.h:73
SEEventHandler * m_ForwardEvents
Definition: PhysiologyEngineThunk.h:78
std::string GetPatientAssessment(int type, eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:227
LoggerForward * m_ForwardLogs
Definition: PhysiologyEngineThunk.h:77
void LogToConsole(bool b)
Definition: PhysiologyEngineThunk.cpp:181
std::vector< double > m_requestedValues
Definition: PhysiologyEngineThunk.h:86
virtual void SetupDefaultDataRequests()
Definition: PhysiologyEngineThunk.cpp:388
void ForwardFatal(const std::string &msg) override
Definition: PhysiologyEngineThunk.cpp:437
std::string PullEvents(eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:208
std::string PullLogMessages(eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:193
bool SerializeFromString(std::string const &state, std::string const &data_requests, eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:73
double GetTimeStep(std::string const &unit)
Definition: PhysiologyEngineThunk.cpp:310
void SetLoggerForward(LoggerForward *lf)
Definition: PhysiologyEngineThunk.h:41
bool m_keepEventChanges
Definition: PhysiologyEngineThunk.h:76
bool SerializeToFile(std::string const &filename)
Definition: PhysiologyEngineThunk.cpp:67
std::string SerializeToString(eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:94
PhysiologyEngineThunk(const std::string &dataDir="./")
Definition: PhysiologyEngineThunk.cpp:30
virtual void AllocateEngine()=0
bool InitializeEngine(std::string const &patient_configuration, std::string const &data_requests, eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:102
void KeepEventChanges(bool keep)
Definition: PhysiologyEngineThunk.cpp:204
void ForwardInfo(const std::string &msg) override
Definition: PhysiologyEngineThunk.cpp:413
std::string GetInitialPatient(eSerializationFormat format)
Definition: PhysiologyEngineThunk.cpp:167
virtual ~PhysiologyEngineThunk()
Definition: PhysiologyEngineThunk.cpp:34
Definition: SEEventManager.h:65
Definition: SEScalarTime.h:28
Definition: SESubstanceManager.h:9

Distributed under the Apache License, Version 2.0.

See accompanying NOTICE file for details.