#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); } }