ServerCore/CommandList.cpp
2021-08-14 15:03:43 -07:00

46 lines
1.1 KiB
C++

#include "CommandList.h"
#include "Log.h"
namespace core {
CommandList::CommandList(std::string delimiter) : delimiter(delimiter) {}
void CommandList::add(Command &command, std::string name) {
command.setName(name);
commands.push_back(&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 {
request.split(delimiter);
for(auto *command : commands)
if(command->check(request))
return command->processCommand(request, session);
}
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(coreutils::ZString &request, TCPSession &session) {
for(Command *command : commands)
session.out << command->getName() << std::endl;
return true;
}
}