From bdbe7ab02d91634f2a35b652151f567c86b0318b Mon Sep 17 00:00:00 2001 From: Jonas Suhr Christensen Date: Sat, 3 Mar 2012 09:40:39 +0100 Subject: Removed sprintfs from task_proto and moved the code to msgparser. Removed heavy printf debugging from msgparser. --- src/task_proto.cc | 64 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 24 deletions(-) (limited to 'src/task_proto.cc') diff --git a/src/task_proto.cc b/src/task_proto.cc index 39232dd..9ed515e 100644 --- a/src/task_proto.cc +++ b/src/task_proto.cc @@ -94,15 +94,17 @@ int callback_lws_task(struct libwebsocket_context * context, pss->wsi = wsi; // send all current tasks - char buf[32]; +// char buf[512]; std::string init_str; TaskList::iterator it; for(it = tasklist.begin(); it != tasklist.end(); it++) { - task_t t = *it; + task_t &t = *it; - sprintf(buf, "add %d %s %s %d %d;", - t.id, t.title.c_str(), t.desc.c_str(), t.x, t.y); - init_str.append(buf); +// sprintf(buf, "add %d %s %s %d %d;", +// t.id, t.title.c_str(), t.desc.c_str(), t.x, t.y); + +// init_str.append(task_cmd(t)); + init_str = msg_tostring(create_msg(cmd::add, t)); } std::string msg; @@ -169,8 +171,10 @@ int callback_lws_task(struct libwebsocket_context * context, } */ - char buf[1024]; - size_t buf_len = 0; +// char buf[1024]; +// size_t buf_len = 0; + + std::string buf_str; MsgVector msglist = parse_msg(data); MsgVector::iterator it_msg; @@ -178,28 +182,34 @@ int callback_lws_task(struct libwebsocket_context * context, msg_t m = *it_msg; switch(m.cmd) { case cmd::add: { - printf("Handling add cmd:\n"); + printf("Handling add cmd\n"); - task_t t =create_task(m.add.title, m.add.desc, - m.add.x, m.add.y); + task_t t = create_task(m.add.title, m.add.desc, + m.add.x, m.add.y); tasklist.push_back(t); - buf_len = sprintf(buf, "add %d %s %s %d %d;", - t.id, t.title.c_str(), t.desc.c_str(), - t.x, t.y); +// buf_len = sprintf(buf, "add %d %s %s %d %d;", +// t.id, t.title.c_str(), t.desc.c_str(), +// t.x, t.y); + +// msg_t tm = create_msg(cmd::add, t); +// std::string str = msg_tostring(tm); + buf_str = msg_tostring(create_msg(cmd::add, t)); - printf("Adding task: %s\n", buf); + printf("Adding task: %s\n", buf_str.c_str()); break; } case cmd::del: { printf("Delete\n"); printf("Deleting task with id %d\n", m.del.id); + task_t del_task; bool id_found = false; TaskList::iterator it; for(it = tasklist.begin(); it != tasklist.end(); it++) { - task_t t = *it; + task_t &t = *it; if(t.id == m.del.id) { id_found = true; + del_task = t; tasklist.erase(it); break; } @@ -208,9 +218,11 @@ int callback_lws_task(struct libwebsocket_context * context, if(!id_found) { printf("\t!!!Could not locate task with id %d\n", m.del.id); } - - buf_len = sprintf(buf, "del %d;", m.del.id); - printf("Deleting task: %s\n", buf); + else { + // buf_len = sprintf(buf, "del %d;", m.del.id); + buf_str = msg_tostring(create_msg(cmd::del, del_task)); + printf("Deleting task: %s\n", buf_str.c_str()); + } break; } case cmd::move: { @@ -222,13 +234,15 @@ int callback_lws_task(struct libwebsocket_context * context, TaskList::iterator it; int x = m.move.x / 300 * 300; - + + task_t moved_task; for(it = tasklist.begin(); it != tasklist.end(); it++) { - task_t t = *it; - if(t.id == m.move.id) { + task_t &t = *it; + if(it->id == m.move.id) { id_found = true; t.x = x; t.y = m.move.y; + moved_task = t; break; } } @@ -237,8 +251,9 @@ int callback_lws_task(struct libwebsocket_context * context, printf("\t!!!Could not locate task with id %d\n", m.move.id); } - buf_len = sprintf(buf, "move %d %d %d;", m.move.id, x, m.move.y); - printf("Moving task: %s\n", buf); +// buf_len = sprintf(buf, "move %d %d %d;", m.move.id, x, m.move.y); + buf_str = msg_tostring(create_msg(cmd::move, moved_task)); + printf("Moving task: %s\n", buf_str.c_str()); break; } case cmd::update: @@ -265,7 +280,8 @@ int callback_lws_task(struct libwebsocket_context * context, */ std::string msg; msg.append((size_t)LWS_SEND_BUFFER_PRE_PADDING, ' '); - msg.append(buf, buf_len); +// msg.append(buf, buf_len); + msg.append(buf_str); msg.append((size_t)LWS_SEND_BUFFER_POST_PADDING, ' '); std::map >::iterator it = msgqueue.begin(); -- cgit v1.2.3