From d935b195a2246fa24d35df7c6fc354ae628a6777 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Thu, 10 Jan 2013 15:51:33 +0100 Subject: Added attributes to nodes as well as messages for manipulating and transporting them. Switched debug interface to hugin. --- src/messageparser.cc | 50 ++++++++++++++++++++++++++++---------------------- 1 file changed, 28 insertions(+), 22 deletions(-) (limited to 'src/messageparser.cc') diff --git a/src/messageparser.cc b/src/messageparser.cc index 1aba5ee..9e5e7ab 100644 --- a/src/messageparser.cc +++ b/src/messageparser.cc @@ -26,11 +26,15 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "messageparser.h" +#include "taskmanager.h" #include #include #include #include +#include + +#include "hugin.hpp" typedef std::vector TokenVector; typedef std::list MsgTokensList; @@ -54,12 +58,12 @@ inline static void parse_into_msg_tokens(std::string& data, break; case ' ': if(inside_quote) { - //printf("Appending %c\n", ch); + //DEBUG(msgparser, "Appending %c\n", ch); token += ch; } else { if(token.empty()) continue; // skip multiple white spaces and pre white space -// printf("Adding token %s\n", token.c_str()); +// DEBUG(msgparser, "Adding token %s\n", token.c_str()); tokenVector.push_back(token); token.clear(); } @@ -92,8 +96,7 @@ inline static void parse_into_msg_tokens(std::string& data, tokenVector.clear(); } } -#include -static taskid_t baseid = 10000; + static taskid_t getId(std::map &sym, std::string token) { bool isnumeric = true; @@ -103,7 +106,7 @@ static taskid_t getId(std::map &sym, std::string token) if(isnumeric) return atoi(token.c_str()); - if(sym.find(token) == sym.end()) sym[token] = baseid++; + if(sym.find(token) == sym.end()) sym[token] = task_manager.createId(); return sym[token]; } @@ -126,9 +129,9 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, message_t m; - printf("t[%d] : %s, running in clientmode: %d\n", origin, t[origin].c_str(), clientmode); + DEBUG(msgparser, "t[%d] : %s, running in clientmode: %d\n", origin, t[origin].c_str(), clientmode); -// printf("%d\n", t.size()); +// DEBUG(msgparser, "%d\n", t.size()); if(t[origin] == "observe") m.cmd = cmd::observe; else if(t[origin] == "unobserve") m.cmd = cmd::unobserve; @@ -138,12 +141,12 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, else if(t[origin] == "update") m.cmd = cmd::update; else m.cmd = cmd::error; -// printf("Number of tokens %d\n", t.size()); +// DEBUG(msgparser, "Number of tokens %d\n", t.size()); switch(m.cmd) { case cmd::observe: { if(t.size() != origin+1+1) { - printf("Wrong number of parameters\n"); + DEBUG(msgparser, "Wrong number of parameters\n"); continue; } m.observe.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); @@ -151,7 +154,7 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, } case cmd::unobserve: { if(t.size() != origin+1+1) { - printf("Wrong number of parameters\n"); + DEBUG(msgparser, "Wrong number of parameters\n"); continue; } m.unobserve.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); @@ -159,11 +162,11 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, } case cmd::create: { if(!clientmode && t.size() != origin+1+2) { - printf("Wrong number of parameters\n"); + DEBUG(msgparser, "Wrong number of parameters\n"); continue; } if(clientmode && t.size() != origin+1+2) { - printf("Wrong number of parameters\n"); + DEBUG(msgparser, "Wrong number of parameters\n"); continue; } if(clientmode) { @@ -178,7 +181,7 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, } case cmd::remove: { if(t.size() != origin+1+1) { - printf("Wrong number of parameters\n"); + DEBUG(msgparser, "Wrong number of parameters\n"); continue; } m.remove.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); @@ -186,7 +189,7 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, } case cmd::move: { if(t.size() != origin+2+1) { - printf("Wrong number of parameters\n"); + DEBUG(msgparser, "Wrong number of parameters\n"); continue; } m.move.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); @@ -194,12 +197,13 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, break; } case cmd::update: { - if(t.size() != origin+2+1) { - printf("Wrong number of parameters\n"); + if(t.size() != origin+3+1) { + DEBUG(msgparser, "Wrong number of parameters\n"); continue; } m.update.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); - sprintf(m.update.title, "%s", t[origin+2].c_str()); + m.update.name = t[origin+2]; + m.update.value = t[origin+3]; break; } default: @@ -210,7 +214,7 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, } MessageList parse_msg(std::string data) { - printf("Parsing: %s\n", data.c_str()); + DEBUG(msgparser, "Parsing: %s\n", data.c_str()); MsgTokensList msgTokensList; parse_into_msg_tokens(data, msgTokensList); @@ -222,7 +226,7 @@ MessageList parse_msg(std::string data) { } MessageList parse_msg_client(std::string data) { - printf("Parsing: \n%s\n", data.c_str()); + DEBUG(msgparser, "Parsing: \n%s\n", data.c_str()); MsgTokensList msgTokensList; parse_into_msg_tokens(data, msgTokensList); @@ -250,7 +254,8 @@ std::string msg_tostring(message_t m) { break; } case cmd::update: { - asprintf(&buf, "update %d \"%s\";", m.update.id, m.update.title); + asprintf(&buf, "update %d \"%s\" \"%s\";", + m.update.id, m.update.name.c_str(), m.update.value.c_str()); break; }; default: @@ -274,11 +279,12 @@ message_t create_msg_create(task_t t) { return m; } -message_t create_msg_update(task_t t) { +message_t create_msg_update(task_t t, const std::string &attr) { message_t m; m.cmd = cmd::update; m.update.id = t.id; - sprintf(m.update.title, "%s", t.title.c_str()); + m.update.name = attr; + m.update.value = t.attributes[attr]; return m; } -- cgit v1.2.3