summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins
diff options
context:
space:
mode:
authorStefan Radomski <github@mintwerk.de>2016-12-12 15:19:14 (GMT)
committerStefan Radomski <github@mintwerk.de>2016-12-12 15:19:14 (GMT)
commit047a35fc691a348008cbfbf4c3d7722a6ec4f93e (patch)
tree362a55496c4185b0be5966073d43d00e1b0e27de /src/uscxml/plugins
parentdcac58f473789dd07e9094e61f819aef2fbc4b4a (diff)
downloaduscxml-047a35fc691a348008cbfbf4c3d7722a6ec4f93e.zip
uscxml-047a35fc691a348008cbfbf4c3d7722a6ec4f93e.tar.gz
uscxml-047a35fc691a348008cbfbf4c3d7722a6ec4f93e.tar.bz2
Custom logging for interpreters
Diffstat (limited to 'src/uscxml/plugins')
-rw-r--r--src/uscxml/plugins/DataModelImpl.h2
-rw-r--r--src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp26
-rw-r--r--src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp2
-rw-r--r--src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp2
-rw-r--r--src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp11
-rw-r--r--src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h5
6 files changed, 28 insertions, 20 deletions
diff --git a/src/uscxml/plugins/DataModelImpl.h b/src/uscxml/plugins/DataModelImpl.h
index 9ee1ed1..e93361d 100644
--- a/src/uscxml/plugins/DataModelImpl.h
+++ b/src/uscxml/plugins/DataModelImpl.h
@@ -23,6 +23,7 @@
#include "uscxml/Common.h"
#include "uscxml/plugins/Invoker.h"
#include "uscxml/plugins/IOProcessor.h"
+#include "uscxml/interpreter/Logging.h"
namespace XERCESC_NS {
class DOMDocument;
@@ -52,6 +53,7 @@ public:
virtual bool isInState(const std::string& stateId) = 0;
virtual XERCESC_NS::DOMDocument* getDocument() const = 0;
virtual const std::map<std::string, Invoker>& getInvokers() = 0;
+ virtual Logger getLogger() = 0;
};
class USCXML_API DataModelExtension {
diff --git a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
index f916ae9..283372d 100644
--- a/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
+++ b/src/uscxml/plugins/datamodel/ecmascript/v8/V8DataModel.cpp
@@ -485,27 +485,27 @@ Data V8DataModel::getValueAsData(const v8::Local<v8::Value>& value, std::set<v8:
} else if (value->IsBoolean()) {
data.atom = (value->ToBoolean()->Value() ? "true" : "false");
} else if (value->IsBooleanObject()) {
- LOG(USCXML_ERROR) << "IsBooleanObject is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsBooleanObject is unimplemented" << std::endl;
} else if (value->IsDate()) {
- LOG(USCXML_ERROR) << "IsDate is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsDate is unimplemented" << std::endl;
} else if (value->IsExternal()) {
- LOG(USCXML_ERROR) << "IsExternal is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsExternal is unimplemented" << std::endl;
} else if (value->IsFalse()) {
- LOG(USCXML_ERROR) << "IsFalse is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsFalse is unimplemented" << std::endl;
} else if (value->IsFunction()) {
- LOG(USCXML_ERROR) << "IsFunction is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsFunction is unimplemented" << std::endl;
} else if (value->IsInt32()) {
int32_t prop = value->Int32Value();
data.atom = toStr(prop);
} else if (value->IsNativeError()) {
- LOG(USCXML_ERROR) << "IsNativeError is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsNativeError is unimplemented" << std::endl;
} else if (value->IsNull()) {
- LOG(USCXML_ERROR) << "IsNull is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsNull is unimplemented" << std::endl;
} else if (value->IsNumber()) {
v8::String::AsciiValue prop(v8::Local<v8::String>::Cast(v8::Local<v8::Number>::Cast(value)));
data.atom = *prop;
} else if (value->IsNumberObject()) {
- LOG(USCXML_ERROR) << "IsNumberObject is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsNumberObject is unimplemented" << std::endl;
} else if (value->IsObject()) {
// if (V8ArrayBuffer::hasInstance(value)) {
@@ -529,21 +529,21 @@ Data V8DataModel::getValueAsData(const v8::Local<v8::Value>& value, std::set<v8:
data.compound[*key] = getValueAsData(property, alreadySeen);
}
} else if (value->IsRegExp()) {
- LOG(USCXML_ERROR) << "IsRegExp is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsRegExp is unimplemented" << std::endl;
} else if(value->IsString()) {
v8::String::AsciiValue property(v8::Local<v8::String>::Cast(value));
data.atom = *property;
data.type = Data::VERBATIM;
} else if(value->IsStringObject()) {
- LOG(USCXML_ERROR) << "IsStringObject is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsStringObject is unimplemented" << std::endl;
} else if(value->IsTrue()) {
- LOG(USCXML_ERROR) << "IsTrue is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsTrue is unimplemented" << std::endl;
} else if(value->IsUint32()) {
- LOG(USCXML_ERROR) << "IsUint32 is unimplemented" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "IsUint32 is unimplemented" << std::endl;
} else if(value->IsUndefined()) {
data.atom = "undefined";
} else {
- LOG(USCXML_ERROR) << "Value's type is unknown!" << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << "Value's type is unknown!" << std::endl;
}
return data;
}
diff --git a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
index 55c4501..2ad89b5 100644
--- a/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/lua/LuaDataModel.cpp
@@ -204,7 +204,7 @@ std::shared_ptr<DataModelImpl> LuaDataModel::create(DataModelCallbacks* callback
luabridge::setGlobal(dm->_luaState, resultLxpLOM, "lxp.lom");
}
} catch (luabridge::LuaException e) {
- LOG(USCXML_INFO) << e.what();
+ LOG(_callbacks->getLogger(), USCXML_INFO) << e.what();
}
luabridge::getGlobalNamespace(dm->_luaState).beginClass<LuaDataModel>("DataModel").endClass();
diff --git a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
index a13dd07..a524c7e 100644
--- a/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
+++ b/src/uscxml/plugins/datamodel/promela/PromelaDataModel.cpp
@@ -193,7 +193,7 @@ void PromelaDataModel::setEvent(const Event& event) {
try {
PromelaParser parser(expr);
} catch (Event e) {
- LOG(USCXML_ERROR) << e << std::endl;
+ LOG(_callbacks->getLogger(), USCXML_ERROR) << e << std::endl;
return false;
}
return true;
diff --git a/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp b/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp
index de5994a..d6d0f99 100644
--- a/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp
+++ b/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.cpp
@@ -99,7 +99,7 @@ void DirMonInvoker::eventFromSCXML(const Event& event) {
void DirMonInvoker::invoke(const std::string& source, const Event& req) {
if (req.params.find("dir") == req.params.end()) {
- LOG(USCXML_ERROR) << "No dir param given";
+ LOG(_interpreter->getLogger(), USCXML_ERROR) << "No dir param given";
return;
}
@@ -137,7 +137,7 @@ void DirMonInvoker::invoke(const std::string& source, const Event& req) {
URL url = URL::resolve(dirIter->second.atom, _interpreter->getBaseURL());
if (!url.isAbsolute()) {
- LOG(USCXML_ERROR) << "Given directory '" << dirIter->second << "' cannot be transformed to absolute path";
+ LOG(_interpreter->getLogger(), USCXML_ERROR) << "Given directory '" << dirIter->second << "' cannot be transformed to absolute path";
} else {
_dir = url.path();
}
@@ -145,6 +145,7 @@ void DirMonInvoker::invoke(const std::string& source, const Event& req) {
}
_watcher = new DirectoryWatch(_dir, _recurse);
+ _watcher->setLogger(_interpreter->getLogger());
_watcher->addMonitor(this);
_watcher->updateEntries(true);
@@ -313,7 +314,7 @@ void DirectoryWatch::updateEntries(bool reportAsExisting) {
// stat directory for modification date
struct stat dirStat;
if (stat((_dir + _relDir).c_str(), &dirStat) != 0) {
- LOG(USCXML_ERROR) << "Error with stat on directory " << _dir << ": " << strerror(errno);
+ LOG(_logger, USCXML_ERROR) << "Error with stat on directory " << _dir << ": " << strerror(errno);
return;
}
@@ -327,7 +328,7 @@ void DirectoryWatch::updateEntries(bool reportAsExisting) {
DIR *dp;
dp = opendir((_dir + _relDir).c_str());
if (dp == NULL) {
- LOG(USCXML_ERROR) << "Error opening directory " << _dir + _relDir << ": " << strerror(errno);
+ LOG(_logger, USCXML_ERROR) << "Error opening directory " << _dir + _relDir << ": " << strerror(errno);
return;
}
// iterate all entries and see what changed
@@ -352,7 +353,7 @@ void DirectoryWatch::updateEntries(bool reportAsExisting) {
struct stat fileStat;
if (stat(filename.c_str(), &fileStat) != 0) {
- LOG(USCXML_ERROR) << "Error with stat on directory entry: " << filename << ": " << strerror(errno);
+ LOG(_logger, USCXML_ERROR) << "Error with stat on directory entry: " << filename << ": " << strerror(errno);
continue;
}
diff --git a/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h b/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h
index 6e13864..e6bb9aa 100644
--- a/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h
+++ b/src/uscxml/plugins/invoker/dirmon/DirMonInvoker.h
@@ -73,11 +73,16 @@ public:
return entries;
}
+ void setLogger(Logger logger) {
+ _logger = logger;
+ }
+
protected:
DirectoryWatch(const std::string& dir, const std::string& relDir) : _dir(dir), _relDir(relDir), _recurse(true), _lastChecked(0) {}
std::string _dir;
std::string _relDir;
+ Logger _logger;
bool _recurse;
std::map<std::string, struct stat> _knownEntries;