ServerCore/CommandList.cpp
2020-06-11 18:54:51 -07:00

47 lines
1.2 KiB
C++

#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) {
if(session->grab != NULL)
return session->grab->processCommand(request, session, data);
else {
int pos = request.find(" ");
std::string function = pos == request.npos ? request: request.substr(0, pos);
for(auto *command : commands)
if(command->check(function))
return command->processCommand(request, session, data);
}
return false;
}
bool CommandList::grabInput(TCPSession *session, Command &command) {
session->grab = &command;
return true;
}
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;
return true;
}
}