summaryrefslogtreecommitdiffstats
path: root/apps/uscxml-browser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'apps/uscxml-browser.cpp')
-rw-r--r--apps/uscxml-browser.cpp43
1 files changed, 30 insertions, 13 deletions
diff --git a/apps/uscxml-browser.cpp b/apps/uscxml-browser.cpp
index a57b79b..5f48842 100644
--- a/apps/uscxml-browser.cpp
+++ b/apps/uscxml-browser.cpp
@@ -1,6 +1,8 @@
#include "uscxml/config.h"
#include "uscxml/Interpreter.h"
+#include "uscxml/InterpreterOptions.h"
#include "uscxml/debug/InterpreterIssue.h"
+#include "uscxml/debug/DebuggerServlet.h"
#include "uscxml/interpreter/InterpreterMonitor.h"
#include "uscxml/util/DOM.h"
@@ -87,22 +89,37 @@ int main(int argc, char** argv) {
}
}
+ if (options.withDebugger) {
+ DebuggerServlet* debugger;
+ debugger = new DebuggerServlet();
+ debugger->copyToInvokers(true);
+ HTTPServer::getInstance()->registerServlet("/debug", debugger);
+ for (auto interpreter : interpreters) {
+ interpreter.addMonitor(debugger);
+ }
+ }
+
// run interpreters
- try {
- std::list<Interpreter>::iterator interpreterIter = interpreters.begin();
- while (interpreters.size() > 0) {
- while(interpreterIter != interpreters.end()) {
- InterpreterState state = interpreterIter->step();
- if (state == USCXML_FINISHED) {
- interpreterIter = interpreters.erase(interpreterIter);
- } else {
- interpreterIter++;
+ if (interpreters.size() > 0) {
+ try {
+ std::list<Interpreter>::iterator interpreterIter = interpreters.begin();
+ while (interpreters.size() > 0) {
+ while(interpreterIter != interpreters.end()) {
+ InterpreterState state = interpreterIter->step();
+ if (state == USCXML_FINISHED) {
+ interpreterIter = interpreters.erase(interpreterIter);
+ } else {
+ interpreterIter++;
+ }
}
+ interpreterIter = interpreters.begin();
}
- interpreterIter = interpreters.begin();
+ } catch (Event e) {
+ std::cout << e << std::endl;
}
- } catch (Event e) {
- std::cout << e << std::endl;
- }
+ } else if (options.withDebugger) {
+ while(true)
+ std::this_thread::sleep_for(std::chrono::seconds(1));
+ }
return EXIT_SUCCESS;
} \ No newline at end of file