summaryrefslogtreecommitdiff
path: root/server/src/journal.cc
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2012-01-26 12:08:39 +0100
committerBent Bisballe Nyeng <deva@aasimon.org>2012-01-26 12:08:39 +0100
commit4edae3f518353bb21a02fcda2dfcff83c5a72fc3 (patch)
tree7902e2b6af1dabdb5c49b906b8592874bfce407d /server/src/journal.cc
parente9ff9842e9a8c178f5e17c0cf5dde16db1a0d8fc (diff)
New onCommit scripting system.
Diffstat (limited to 'server/src/journal.cc')
-rw-r--r--server/src/journal.cc24
1 files changed, 21 insertions, 3 deletions
diff --git a/server/src/journal.cc b/server/src/journal.cc
index fc4203c..04b1459 100644
--- a/server/src/journal.cc
+++ b/server/src/journal.cc
@@ -32,7 +32,8 @@
Journal::Journal() {}
void Journal::addEntry(Transaction &transaction, Commit &commit,
- std::string resume, Template *templ)
+ std::string resume, Template *templ,
+ LUAOnCommit *oncommit)
{
size_t index = 0;
std::vector< Macro >::iterator i = templ->macros.begin();
@@ -70,16 +71,17 @@ void Journal::addEntry(Transaction &transaction, Commit &commit,
}
#endif
- addEntry(resume, commit.macro, transaction.user, index);
+ addEntry(resume, commit.macro, transaction.user, index, oncommit);
}
void Journal::addEntry(std::string resume, std::string macro,
- std::string user, int index)
+ std::string user, int index, LUAOnCommit *oncommit)
{
DEBUG(journal, "Add: %p %s %s - %s\n", this, macro.c_str(),
user.c_str(), resume.c_str());
ResumeEntry re;
+ re.oncommit = oncommit;
re.resume = resume;
re.macro = macro;
re.user = user;
@@ -148,6 +150,22 @@ std::string Journal::patientID()
return _patientid;
}
+void Journal::runOnCommitScripts() throw(LUAScript::Exception)
+{
+ std::map< int, ResumeEntry >::iterator i = entrylist.begin();
+ while(i != entrylist.end()) {
+ if(i->second.oncommit != NULL) {
+ try {
+ i->second.oncommit->run();
+ } catch(LUAScript::Exception &e) {
+ throw e;
+ }
+ }
+ i++;
+ }
+}
+
+
#ifdef TEST_JOURNAL
//deps: debug.cc log.cc journal_uploadserver.cc journal_commit.cc
//cflags: -I..