summaryrefslogtreecommitdiff
path: root/rotord/src
diff options
context:
space:
mode:
authorTim Redfern <tim@herge.(none)>2013-08-08 14:45:47 +0100
committerTim Redfern <tim@herge.(none)>2013-08-08 14:45:47 +0100
commitebc9d15f13cbf96d1ec093405657fe201b830ce4 (patch)
treed757a17625994924ed243afa73de1542cd4caf3d /rotord/src
parenta2254447b138af7fc0719e5a107816487255736b (diff)
basic list_nodes
Diffstat (limited to 'rotord/src')
-rwxr-xr-xrotord/src/rotor.h10
-rwxr-xr-xrotord/src/rotord.cpp10
2 files changed, 20 insertions, 0 deletions
diff --git a/rotord/src/rotor.h b/rotord/src/rotor.h
index 8e37b51..e4207b3 100755
--- a/rotord/src/rotor.h
+++ b/rotord/src/rotor.h
@@ -1138,6 +1138,16 @@ namespace Rotor {
}
return NULL;
};
+ void list_nodes(xmlIO XML){
+ int i=0;
+ for (auto& type: type_map) { //c++11
+ XML.addTag("node");
+ XML.addAttribute("node","name",type.first,i);
+ if (dynamic_cast<Signal_node*> (type.second)!=nullptr) XML.addAttribute("node","type","signal",i);
+ if (dynamic_cast<Image_node*> (type.second)!=nullptr) XML.addAttribute("node","type","image",i);
+ i++;
+ }
+ }
private:
unordered_map<string,Node*> type_map;
};
diff --git a/rotord/src/rotord.cpp b/rotord/src/rotord.cpp
index 6f2d765..fefca8e 100755
--- a/rotord/src/rotord.cpp
+++ b/rotord/src/rotord.cpp
@@ -1,5 +1,7 @@
#include "rotord.h"
+using namespace Rotor;
+
RenderContextHandler::RenderContextHandler(const std::string _content,const HTTPServerResponse::HTTPStatus _status){
content=_content;
status=_status;
@@ -98,6 +100,14 @@ HTTPRequestHandler* RotorRequestHandlerFactory::createRequestHandler(const HTTPS
status=HTTPResponse::HTTP_OK;
}
}
+ else if (command[0]=="listnodes") {
+ XML.pushTag("rotor");
+ if (request.getMethod()=="GET") {
+ Node_factory factory;
+ factory.list_nodes(XML);
+ status=HTTPResponse::HTTP_OK;
+ }
+ }
else if (command[0]=="exit") {
logger.information("exiting");
exit(0);