#include "CommandList.h" #include "Log.h" namespace core { CommandList::CommandList(std::string delimiter, int depth) : delimiter(delimiter), depth(depth) {} void CommandList::add(Command &command, std::string name) { commands.insert(std::make_pair(name, &command)); } void CommandList::remove(Command &command) {} bool CommandList::processRequest(coreutils::ZString &request, TCPSession &session) { if(session.grab != NULL) return session.grab->processCommand(request, session); else { if(request.equals("")) return false; request.split(delimiter, 10); request.reset(); try { auto command = commands.at(request[0].str()); return command->processCommand(request, session); } catch(...) { return false; } } return true; } bool CommandList::grabInput(TCPSession &session, Command &command) { session.grab = &command; return true; } void CommandList::clearGrab(TCPSession &session) { session.grab = NULL; } int CommandList::processCommand(coreutils::ZString &request, TCPSession &session) { // for(Command *command : commands) // session.out << command->getName() << std::endl; return true; } }