From ae4b5a79e5863ee6440b2070361f3229285a9380 Mon Sep 17 00:00:00 2001 From: Jonas Suhr Christensen Date: Tue, 22 May 2012 12:09:08 +0200 Subject: Working cli client. --- src/messageparser.cc | 80 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 25 deletions(-) (limited to 'src/messageparser.cc') diff --git a/src/messageparser.cc b/src/messageparser.cc index 62923be..bfaa033 100644 --- a/src/messageparser.cc +++ b/src/messageparser.cc @@ -98,75 +98,95 @@ inline static void parse_into_msg_tokens(std::string& data, } inline static void create_msg_list(MsgTokensList& msgTokensList, - MessageList& msgList) { + MessageList& msgList, + bool clientmode) { + int origin = 0; + if(clientmode) { + origin = 1; + } + MsgTokensList::iterator it_msg; for(it_msg = msgTokensList.begin(); it_msg != msgTokensList.end(); it_msg++) { TokenVector t = *it_msg; //malformed msg - if(t.size() < 1) continue; + if(t.size() < origin+1) continue; message_t m; - if(t[0] == "observe") m.cmd = cmd::observe; - else if(t[0] == "unobserve") m.cmd = cmd::unobserve; - else if(t[0] == "create") m.cmd = cmd::create; - else if(t[0] == "remove") m.cmd = cmd::remove; - else if(t[0] == "move") m.cmd = cmd::move; - else if(t[0] == "update") m.cmd = cmd::update; +// printf("t[%d] : %s, running in clientmode: %d\n", origin, t[origin].c_str(), clientmode); + +// printf("%d\n", t.size()); + + if(t[origin] == "observe") m.cmd = cmd::observe; + else if(t[origin] == "unobserve") m.cmd = cmd::unobserve; + else if(t[origin] == "create") m.cmd = cmd::create; + else if(t[origin] == "remove") m.cmd = cmd::remove; + else if(t[origin] == "move") m.cmd = cmd::move; + else if(t[origin] == "update") m.cmd = cmd::update; else m.cmd = cmd::error; // printf("Number of tokens %d\n", t.size()); switch(m.cmd) { case cmd::observe: { - if(t.size() != 1+1) { - printf("Wrong number of parameters\n"); + if(t.size() != origin+1+1) { + printf("W1: rong number of parameters\n"); continue; } - m.observe.id = atoi(t[1].c_str()); + m.observe.id = atoi(t[origin+1].c_str()); break; } case cmd::unobserve: { - if(t.size() != 1+1) { + if(t.size() != origin+1+1) { printf("Wrong number of parameters\n"); continue; } - m.unobserve.id = atoi(t[1].c_str()); + m.unobserve.id = atoi(t[origin+1].c_str()); break; } case cmd::create: { - if(t.size() != 1+1) { + if(!clientmode && t.size() != origin+1+1) { printf("Wrong number of parameters\n"); continue; } - m.create.parentid = atoi(t[1].c_str()); + if(clientmode && t.size() != origin+1+2) { + printf("Wrong number of parameters\n"); + continue; + } + if(clientmode) { + m.create.id = atoi(t[origin+1].c_str()); + m.create.parentid = atoi(t[origin+2].c_str()); + } + else { + m.create.parentid = atoi(t[origin+1].c_str()); + } break; } case cmd::remove: { - if(t.size() != 1+1) { + if(t.size() != origin+1+1) { printf("Wrong number of parameters\n"); continue; } - m.remove.id = atoi(t[1].c_str()); + m.remove.id = atoi(t[origin+1].c_str()); break; } case cmd::move: { - if(t.size() != 2+1) { + if(t.size() != origin+2+1) { printf("Wrong number of parameters\n"); continue; } - m.move.id = atoi(t[1].c_str()); - m.move.parentid = atoi(t[2].c_str()); + m.move.id = atoi(t[origin+1].c_str()); + m.move.parentid = atoi(t[origin+2].c_str()); break; } case cmd::update: { - if(t.size() != 2+1) { + if(t.size() != origin+2+1) { printf("Wrong number of parameters\n"); continue; } - m.update.id = atoi(t[1].c_str()); - sprintf(m.update.title, "%s", t[2].c_str()); + m.update.id = atoi(t[origin+1].c_str()); + sprintf(m.update.title, "%s", t[origin+2].c_str()); break; } default: @@ -177,13 +197,23 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, } MessageList parse_msg(std::string data) { - printf("Parsing: %s\n", data.c_str()); +// printf("Parsing: %s\n", data.c_str()); + + MsgTokensList msgTokensList; + parse_into_msg_tokens(data, msgTokensList); + + MessageList msgList; + create_msg_list(msgTokensList, msgList, false); + + return msgList; +} +MessageList parse_msg_client(std::string data) { MsgTokensList msgTokensList; parse_into_msg_tokens(data, msgTokensList); MessageList msgList; - create_msg_list(msgTokensList, msgList); + create_msg_list(msgTokensList, msgList, true); return msgList; } -- cgit v1.2.3