summaryrefslogtreecommitdiff
path: root/src/messageparser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/messageparser.cc')
-rw-r--r--src/messageparser.cc77
1 files changed, 40 insertions, 37 deletions
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 <stdlib.h>
-#include <stdio.h>
#include <list>
#include <vector>
#include <map>
-#include "hugin.hpp"
+#include <hugin.hpp>
+
+#include "nodemanager.h"
typedef std::vector<std::string> TokenVector;
typedef std::list<TokenVector> MsgTokensList;
@@ -143,7 +142,7 @@ static nodeid_t getId(std::map<std::string, nodeid_t> &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;
}