From 75d85549c6d2a5284593e20c21d61fc5d6200bca Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Mon, 8 Jun 2020 18:24:49 +0200 Subject: Add 'insert before id' to create and move commands. --- src/messageparser.cc | 77 +++++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 37 deletions(-) (limited to 'src/messageparser.cc') diff --git a/src/messageparser.cc b/src/messageparser.cc index a5b6d71..1b5fd7f 100644 --- a/src/messageparser.cc +++ b/src/messageparser.cc @@ -26,15 +26,14 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include "messageparser.h" -#include "nodemanager.h" -#include -#include #include #include #include -#include "hugin.hpp" +#include + +#include "nodemanager.h" typedef std::vector TokenVector; typedef std::list MsgTokensList; @@ -143,7 +142,7 @@ static nodeid_t getId(std::map &sym, std::string token) if(isnumeric) { nodeid_t id = atoi(token.c_str()); - DEBUG(getid, "======= id: %d\n", id); + DEBUG(getid, "======= id: %d\n", (int)id); return id; } @@ -204,7 +203,7 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, DEBUG(msgparser, "Wrong number of parameters\n"); continue; } - m.subscribe.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); + m.subscribe.id = getId(sym, t[origin+1]); } break; @@ -215,8 +214,8 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, DEBUG(msgparser, "Wrong number of parameters\n"); continue; } - m.unsubscribe.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); - DEBUG(msgparser, "unsubscribe @ %d\n", m.unsubscribe.id); + m.unsubscribe.id = getId(sym, t[origin+1]); + DEBUG(msgparser, "unsubscribe @ %d\n", (int)m.unsubscribe.id); } break; @@ -243,25 +242,27 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, case cmd::create: { - if(!clientmode && t.size() != origin+1+2) + if(!clientmode && t.size() != origin+1+2+1) { DEBUG(msgparser, "Wrong number of parameters\n"); continue; } - if(clientmode && t.size() != origin+1+2) + if(clientmode && t.size() != origin+1+2+1) { DEBUG(msgparser, "Wrong number of parameters\n"); continue; } if(clientmode) { - m.create.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); - m.create.parentid = getId(sym, t[origin+2]);// atoi(t[origin+2].c_str()); + m.create.id = getId(sym, t[origin+1]); + m.create.parentid = getId(sym, t[origin+2]); + m.create.insertbeforeid = getId(sym, t[origin+3]); } else { - m.create.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); - m.create.parentid = getId(sym, t[origin+2]);//atoi(t[origin+1].c_str()); + m.create.id = getId(sym, t[origin+1]); + m.create.parentid = getId(sym, t[origin+2]); + m.create.insertbeforeid = getId(sym, t[origin+3]); } break; } @@ -272,18 +273,19 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, DEBUG(msgparser, "Wrong number of parameters\n"); continue; } - m.remove.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); + m.remove.id = getId(sym, t[origin+1]); } break; case cmd::move: { - if(t.size() != origin+2+1) + if(t.size() != origin+2+1+1) { DEBUG(msgparser, "Wrong number of parameters\n"); continue; } - m.move.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); - m.move.parentid = getId(sym, t[origin+2]);//atoi(t[origin+2].c_str()); + m.move.id = getId(sym, t[origin+1]); + m.move.parentid = getId(sym, t[origin+2]); + m.move.insertbeforeid = getId(sym, t[origin+3]); } break; case cmd::update: @@ -293,7 +295,7 @@ inline static void create_msg_list(MsgTokensList& msgTokensList, DEBUG(msgparser, "Wrong number of parameters\n"); continue; } - m.update.id = getId(sym, t[origin+1]);//atoi(t[origin+1].c_str()); + m.update.id = getId(sym, t[origin+1]); m.update.attribute = t[origin+2]; m.update.value = t[origin+3]; } @@ -332,44 +334,44 @@ MessageList parse_msg_client(std::string data) std::string msg_tostring(message_t m) { - char* buf = NULL; + std::string msg; + switch(m.cmd) { case cmd::create: - asprintf(&buf, "create %d %d;", - m.create.id, - m.create.parentid); + msg = "create " + + std::to_string(m.create.id) + " " + + std::to_string(m.create.parentid) + " " + + std::to_string(m.create.insertbeforeid); break; case cmd::remove: - asprintf(&buf, "remove %d;", m.remove.id); + msg = "remove " + std::to_string(m.remove.id); break; case cmd::move: - asprintf(&buf, "move %d %d;", m.move.id, m.move.parentid); + msg = "move " + + std::to_string(m.move.id) + " " + + std::to_string(m.move.parentid) + " " + + std::to_string(m.move.insertbeforeid); break; case cmd::update: - asprintf(&buf, "update %d \"%s\" \"%s\";", - m.update.id, m.update.attribute.c_str(), m.update.value.c_str()); + msg = "update " + + std::to_string(m.update.id) + " \"" + + m.update.attribute + "\" \"" + m.update.value + "\""; break; default: break; } - std::string r; - if(buf) - { - r = buf; - free(buf); - } - - return r; + return msg + ";"; } -message_t create_msg_create(node_t t) +message_t create_msg_create(node_t t, nodeid_t insertbeforeid) { message_t m; m.cmd = cmd::create; m.create.id = t.id; m.create.parentid = t.parentid; + m.create.insertbeforeid = insertbeforeid; return m; } @@ -391,11 +393,12 @@ message_t create_msg_remove(node_t t) return m; } -message_t create_msg_move(nodeid_t id, nodeid_t to) +message_t create_msg_move(nodeid_t id, nodeid_t to, nodeid_t insertbeforeid) { message_t m; m.cmd = cmd::move; m.move.id = id; m.move.parentid = to; + m.move.insertbeforeid = insertbeforeid; return m; } -- cgit v1.2.3