#include "CommandList.h" #include "Log.h" namespace core { void CommandList::add(Command &command, std::string name) { command.setName(name); commands.push_back(&command); } void CommandList::remove(Command &command) { } bool CommandList::processRequest(std::string request, TCPSession *session, std::stringstream &data) { std::stringstream input = std::stringstream(request); while(!input.eof()) { std::string requests; std::getline(input, requests); if(session->grab != NULL) session->grab->processCommand(requests, session, data); else { int pos = requests.find(" "); std::string function = pos == requests.npos ? requests: requests.substr(0, pos); for(auto *command : commands) if(command->check(function)) command->processCommand(requests, session, data); } } return true; } bool CommandList::grabInput(TCPSession *session, Command &command) { session->grab = &command; } void CommandList::clearGrab(TCPSession *session) { session->grab = NULL; } int CommandList::processCommand(std::string request, TCPSession *session, std::stringstream &data) { for(Command *command : commands) data << command->getName() << std::endl; } }