80 lines
1.6 KiB
C++
80 lines
1.6 KiB
C++
#include "ConsoleSession.h"
|
|
#include "TCPServer.h"
|
|
#include "Log.h"
|
|
|
|
namespace core {
|
|
|
|
ConsoleSession::ConsoleSession(EPoll &ePoll, TCPServer &server) : TerminalSession(ePoll, server) {}
|
|
|
|
ConsoleSession::~ConsoleSession() {}
|
|
|
|
void ConsoleSession::protocol(coreutils::ZString &data) {
|
|
|
|
coreutils::ZString blank("");
|
|
|
|
switch (status) {
|
|
|
|
case WELCOME:
|
|
status = LOGIN;
|
|
protocol(blank);
|
|
break;
|
|
|
|
case LOGIN:
|
|
out << "User: ";
|
|
status = WAIT_USER_PROFILE;
|
|
break;
|
|
|
|
case WAIT_USER_PROFILE:
|
|
status = PASSWORD;
|
|
protocol(blank);
|
|
break;
|
|
|
|
case PASSWORD:
|
|
out << "Password: ";
|
|
status = WAIT_PASSWORD;
|
|
break;
|
|
|
|
case WAIT_PASSWORD:
|
|
status = PROMPT;
|
|
protocol(blank);
|
|
break;
|
|
|
|
case PROMPT:
|
|
out << (": ");
|
|
status = INPUT;
|
|
break;
|
|
|
|
case INPUT:
|
|
command = data;
|
|
status = PROCESS;
|
|
protocol(blank);
|
|
break;
|
|
|
|
case PROCESS:
|
|
doCommand(command);
|
|
status = command.equals("exit") ? DONE: PROMPT;
|
|
protocol(blank);
|
|
break;
|
|
|
|
case DONE:
|
|
out << "Done." << std::endl;
|
|
break;
|
|
|
|
default:
|
|
out << "Unrecognized status code: ERROR.";
|
|
break;
|
|
}
|
|
}
|
|
|
|
void ConsoleSession::writeLog(std::string data) {
|
|
// saveCursor();
|
|
// setCursorLocation(16, 1);
|
|
// restoreCursor();
|
|
}
|
|
|
|
void ConsoleSession::doCommand(coreutils::ZString &request) {
|
|
server.commands.processRequest(request, *this);
|
|
}
|
|
|
|
}
|