From 1ae51ff94d0f1f27a4e4cc657371578db13c3ca1 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 8 Feb 2019 20:26:14 +0100 Subject: Make code compile again (fix bitrot dating back from 2013). --- src/messagehandler.cc | 340 ++++++++++++++++++++++++++------------------------ 1 file changed, 179 insertions(+), 161 deletions(-) (limited to 'src/messagehandler.cc') diff --git a/src/messagehandler.cc b/src/messagehandler.cc index b061cc9..ad9b8bb 100644 --- a/src/messagehandler.cc +++ b/src/messagehandler.cc @@ -34,167 +34,185 @@ #include "messageparser.h" -MessageList handle_msg(MessageList msgList, clientid_t wsi) { - - MessageList outmsgs; - - MessageList::iterator it; - for(it = msgList.begin(); - it != msgList.end(); - it++) { - message_t &m = *it; - - if(m.cmd == cmd::login) { - connection_handler.login(wsi, m.login.user, m.login.password); - } - - // If client is not authenticated; do not continue beyond this point... - if(!connection_handler.authenticated(wsi)) continue; - - switch(m.cmd) { - case cmd::create: - { - INFO(messagehandler, "Handling create command\n"); - try { - taskid_t id = m.create.id; - m.nodes = task_manager.createTask(m.create.parentid, &id); - m.create.id = id; - outmsgs.push_back(m); - } - catch (std::exception& e) { - DEBUG(messagehandler, "Error creating task\n"); - } - } - break; - - case cmd::remove: - { - INFO(messagehandler, "Handling remove command\n"); - try { - TaskIdList ids = task_manager.subTasks(m.remove.id); - TaskIdList::reverse_iterator id = ids.rbegin(); - while(id != ids.rend()) { - task_t task = task_manager.task(*id); - - message_t m = create_msg_remove(task); - m.nodes = task_manager.removeTask(task.id); - - outmsgs.push_back(m); - id++; - } - } - catch (std::exception& e) { - DEBUG(messagehandler, "Error remove task\n"); - } - } - break; - - case cmd::move: - { - INFO(messagehandler, "Handling move command\n"); - try { - task_t removetask = task_manager.task(m.move.id); - TaskIdListPair tilpair = - task_manager.moveTask(m.move.id, m.move.parentid); - task_t createtask = task_manager.task(m.move.id); - - /* - TaskIdList commonAncestors; - TaskIdList removeAncestors; - TaskIdList createAncestors; - - // find command ancestors and fill ancestors for remove command - for(TaskIdList::iterator it_remove = tilpair.first.begin(); - it_remove != tilpair.first.end(); it_remove++) { - taskid_t removeid = *it; - bool common = false; - for(TaskIdList::iterator it_create = tilpair.second.begin(); - it_create = != tilpair.second.end(); it_create++) { - taskid_t createid = *id; - if(removeid == createid) { - commandAncestors.push_back(removeid); - common = true; - } - } - if(!common) { - removeAncestors.push_back(removeid); - } - } - - // fill ancestors for create command - for(TaskIdList::iterator it_create = tilpair.second.begin(); - it_create = != tilpair.second.end(); it_create++) { - taskid_t createid = *id; - if(removeid == createid) { - commandAncestors.push_back(removeid); - common = true; - } - } - */ - - message_t removemsg = create_msg_remove(removetask); - removemsg.nodes = tilpair.first; - message_t createmsg = create_msg_create(createtask); - createmsg.nodes = tilpair.second; - - outmsgs.push_back(removemsg); - outmsgs.push_back(createmsg); - } - catch (std::exception& e) { - DEBUG(messagehandler, "Error moving task\n"); - } - } - break; - - case cmd::observe: - { - //connection_handler.observe(wsi, m.observe.id); - outmsgs.push_back(m); - } - break; - - case cmd::unobserve: - //connection_handler.unobserve(wsi, m.observe.id); - outmsgs.push_back(m); - DEBUG(handler, "unobserve: %d\n", m.unobserve.id); - break; - - case cmd::update: - { - INFO(messagehandler, "Handling update command\n"); - try { - m.nodes = task_manager.updateTask(m.update.id, - m.update.name, m.update.value); - outmsgs.push_back(m); - } - catch (std::exception& e) { - DEBUG(messagehandler, "Error updating task\n"); - } - } - break; - - case cmd::login: - // Already handled, before this switch ... case - break; - - case cmd::logout: - connection_handler.logout(wsi); - break; - - case cmd::error: - ERR(messagehandler, "An error occurred.\n"); - break; - - default: - WARN(messagehandler, "!!! Unknown command %d\n", m.cmd); - break; - } - task_manager.tree.toStdOut(); - DEBUG(messagehandler, "%d affected nodes registered\n", - (int)m.nodes.size()); - } - - return outmsgs; +MessageList handle_msg(MessageList msgList, clientid_t wsi) +{ + + MessageList outmsgs; + + MessageList::iterator it; + for(it = msgList.begin(); it != msgList.end(); it++) + { + message_t &m = *it; + + if(m.cmd == cmd::login) + { + connection_handler.login(wsi, m.login.user, m.login.password); + } + + // If client is not authenticated; do not continue beyond this point... + if(!connection_handler.authenticated(wsi)) + { + continue; + } + + switch(m.cmd) + { + case cmd::create: + { + INFO(messagehandler, "Handling create command\n"); + try + { + taskid_t id = m.create.id; + m.nodes = task_manager.createTask(m.create.parentid, &id); + m.create.id = id; + outmsgs.push_back(m); + } + catch (std::exception& e) + { + DEBUG(messagehandler, "Error creating task\n"); + } + } + break; + + case cmd::remove: + { + INFO(messagehandler, "Handling remove command\n"); + try + { + TaskIdList ids = task_manager.subTasks(m.remove.id); + TaskIdList::reverse_iterator id = ids.rbegin(); + while(id != ids.rend()) + { + task_t task = task_manager.task(*id); + + message_t m = create_msg_remove(task); + m.nodes = task_manager.removeTask(task.id); + + outmsgs.push_back(m); + id++; + } + } + catch (std::exception& e) + { + DEBUG(messagehandler, "Error remove task\n"); + } + } + break; + + case cmd::move: + { + INFO(messagehandler, "Handling move command\n"); + try + { + task_t removetask = task_manager.task(m.move.id); + TaskIdListPair tilpair = + task_manager.moveTask(m.move.id, m.move.parentid); + task_t createtask = task_manager.task(m.move.id); + +// TaskIdList commonAncestors; +// TaskIdList removeAncestors; +// TaskIdList createAncestors; +// +// // find command ancestors and fill ancestors for remove command +// for(TaskIdList::iterator it_remove = tilpair.first.begin(); +// it_remove != tilpair.first.end(); it_remove++) +// { +// taskid_t removeid = *it; +// bool common = false; +// for(TaskIdList::iterator it_create = tilpair.second.begin(); +// it_create = != tilpair.second.end(); it_create++) +// { +// taskid_t createid = *id; +// if(removeid == createid) +// { +// commandAncestors.push_back(removeid); +// common = true; +// } +// } +// if(!common) +// { +// removeAncestors.push_back(removeid); +// } +// } +// +// // fill ancestors for create command +// for(TaskIdList::iterator it_create = tilpair.second.begin(); +// it_create = != tilpair.second.end(); it_create++) +// { +// taskid_t createid = *id; +// if(removeid == createid) +// { +// commandAncestors.push_back(removeid); +// common = true; +// } +// } + + message_t removemsg = create_msg_remove(removetask); + removemsg.nodes = tilpair.first; + message_t createmsg = create_msg_create(createtask); + createmsg.nodes = tilpair.second; + + outmsgs.push_back(removemsg); + outmsgs.push_back(createmsg); + } + catch (std::exception& e) + { + DEBUG(messagehandler, "Error moving task\n"); + } + } + break; + + case cmd::observe: + { + //connection_handler.observe(wsi, m.observe.id); + outmsgs.push_back(m); + } + break; + + case cmd::unobserve: + //connection_handler.unobserve(wsi, m.observe.id); + outmsgs.push_back(m); + DEBUG(handler, "unobserve: %d\n", m.unobserve.id); + break; + + case cmd::update: + { + INFO(messagehandler, "Handling update command\n"); + try + { + m.nodes = task_manager.updateTask(m.update.id, + m.update.name, m.update.value); + outmsgs.push_back(m); + } + catch (std::exception& e) + { + DEBUG(messagehandler, "Error updating task\n"); + } + } + break; + + case cmd::login: + // Already handled, before this switch ... case + break; + + case cmd::logout: + connection_handler.logout(wsi); + break; + + case cmd::error: + ERR(messagehandler, "An error occurred.\n"); + break; + + default: + WARN(messagehandler, "!!! Unknown command %d\n", m.cmd); + break; + } + task_manager.tree.toStdOut(); + DEBUG(messagehandler, "%d affected nodes registered\n", + (int)m.nodes.size()); + } + + return outmsgs; } #ifdef TEST_MSGHANDLER -- cgit v1.2.3