summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/element/postpone
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/element/postpone')
-rw-r--r--src/uscxml/plugins/element/postpone/PostponeElement.cpp22
-rw-r--r--src/uscxml/plugins/element/postpone/PostponeElement.h14
2 files changed, 18 insertions, 18 deletions
diff --git a/src/uscxml/plugins/element/postpone/PostponeElement.cpp b/src/uscxml/plugins/element/postpone/PostponeElement.cpp
index baa8e62..54f2499 100644
--- a/src/uscxml/plugins/element/postpone/PostponeElement.cpp
+++ b/src/uscxml/plugins/element/postpone/PostponeElement.cpp
@@ -16,7 +16,7 @@ bool connect(pluma::Host& host) {
}
#endif
-boost::shared_ptr<ExecutableContentImpl> PostponeElement::create(Interpreter* interpreter) {
+boost::shared_ptr<ExecutableContentImpl> PostponeElement::create(InterpreterImpl* interpreter) {
boost::shared_ptr<PostponeElement> invoker = boost::shared_ptr<PostponeElement>(new PostponeElement());
invoker->_interpreter = interpreter;
return invoker;
@@ -97,21 +97,21 @@ void PostponeElement::enterElement(const Arabica::DOM::Node<std::string>& node)
void PostponeElement::exitElement(const Arabica::DOM::Node<std::string>& node) {
}
-void PostponeElement::Resubmitter::postpone(const Event& event, std::string until, uint64_t timeout, bool chained, Interpreter* interpreter) {
+void PostponeElement::Resubmitter::postpone(const Event& event, std::string until, uint64_t timeout, bool chained, InterpreterImpl* interpreter) {
Resubmitter* resubmitter = getInstance(interpreter);
resubmitter->_postponedEvents.push_back(Postponed(event, until, timeout, chained));
}
-void PostponeElement::Resubmitter::onStableConfiguration(Interpreter* interpreter) {
+void PostponeElement::Resubmitter::onStableConfiguration(Interpreter interpreter) {
std::list<Postponed>::iterator eventIter = _postponedEvents.begin();
bool dispatched = false;
while(eventIter != _postponedEvents.end()) {
try {
// LOG(INFO) << "Reevaluating: >> " << eventIter->first << " <<";
- if ((!dispatched || eventIter->chaining) && interpreter->getDataModel().evalAsBool(eventIter->until)) {
+ if ((!dispatched || eventIter->chaining) && interpreter.getDataModel().evalAsBool(eventIter->until)) {
// LOG(INFO) << " -> is TRUE";
eventIter->event.name += ".postponed";
- interpreter->receive(eventIter->event, true);
+ interpreter.receive(eventIter->event, true);
_postponedEvents.erase(eventIter);
dispatched = true;
}
@@ -127,21 +127,21 @@ void PostponeElement::Resubmitter::onStableConfiguration(Interpreter* interprete
}
-void PostponeElement::Resubmitter::afterCompletion(Interpreter* interpreter) {
+void PostponeElement::Resubmitter::afterCompletion(Interpreter interpreter) {
tthread::lock_guard<tthread::recursive_mutex> lock(PostponeElement::Resubmitter::_accessLock);
_instances.erase(interpreter);
delete this; // committing suicide is ok if we are careful
}
-std::map<Interpreter*, PostponeElement::Resubmitter*> PostponeElement::Resubmitter::_instances;
+std::map<Interpreter, PostponeElement::Resubmitter*> PostponeElement::Resubmitter::_instances;
tthread::recursive_mutex PostponeElement::Resubmitter::_accessLock;
-PostponeElement::Resubmitter* PostponeElement::Resubmitter::getInstance(Interpreter* interpreter) {
+PostponeElement::Resubmitter* PostponeElement::Resubmitter::getInstance(InterpreterImpl* interpreter) {
tthread::lock_guard<tthread::recursive_mutex> lock(PostponeElement::Resubmitter::_accessLock);
- if (_instances.find(interpreter) == _instances.end()) {
- _instances[interpreter] = new Resubmitter(interpreter);
+ if (_instances.find(interpreter->shared_from_this()) == _instances.end()) {
+ _instances[interpreter->shared_from_this()] = new Resubmitter(interpreter);
}
- return _instances[interpreter];
+ return _instances[interpreter->shared_from_this()];
}
} \ No newline at end of file
diff --git a/src/uscxml/plugins/element/postpone/PostponeElement.h b/src/uscxml/plugins/element/postpone/PostponeElement.h
index 7886415..f0c42c0 100644
--- a/src/uscxml/plugins/element/postpone/PostponeElement.h
+++ b/src/uscxml/plugins/element/postpone/PostponeElement.h
@@ -23,7 +23,7 @@ public:
PostponeElement() {}
virtual ~PostponeElement() {}
- boost::shared_ptr<ExecutableContentImpl> create(Interpreter* interpreter);
+ boost::shared_ptr<ExecutableContentImpl> create(InterpreterImpl* interpreter);
std::string getLocalName() {
return "postpone";
@@ -44,19 +44,19 @@ protected:
// once per interpreter
class Resubmitter : public InterpreterMonitor {
public:
- Resubmitter(Interpreter* interpreter) {
+ Resubmitter(InterpreterImpl* interpreter) {
interpreter->addMonitor(this);
}
- static Resubmitter* getInstance(Interpreter* interpreter);
- static void postpone(const Event& event, std::string until, uint64_t timeout, bool chained, Interpreter* interpreter);
+ static Resubmitter* getInstance(InterpreterImpl* interpreter);
+ static void postpone(const Event& event, std::string until, uint64_t timeout, bool chained, InterpreterImpl* interpreter);
// InterpreterMonitor
- void onStableConfiguration(Interpreter* interpreter);
- void afterCompletion(Interpreter* interpreter);
+ void onStableConfiguration(Interpreter interpreter);
+ void afterCompletion(Interpreter interpreter);
std::list<Postponed> _postponedEvents;
- static std::map<Interpreter*, Resubmitter*> _instances;
+ static std::map<Interpreter, Resubmitter*> _instances;
static tthread::recursive_mutex _accessLock;
};