diff options
Diffstat (limited to 'src/uscxml/plugins')
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; |