#ifndef IOMAN_H #define IOMAN_H #include "cmdman.h" #include "fileman.h" #include #include using boost::asio::ip::tcp; #define BLOCKSIZE 8 class IoMan { private: const std::string protoVersion = "0.2"; boost::asio::io_service ios; boost::asio::streambuf sendbuf; boost::asio::streambuf recvbuf; boost::system::error_code errcode; tcp::socket *tcpsock; std::string ipstring; int port; bool connected; protected: CmdMan cmdman; FileMan fileman; bool loggedin; bool parseJson(Json::Value *root, string jsonstring); virtual bool handleJson(Json::Value root) = 0; virtual void printErrorMessage(std::string msg) = 0; virtual void printWelcomeMessage() = 0; virtual std::string getCmdPrompt() = 0; virtual std::string getUserPrompt() = 0; virtual std::string getPassPrompt() = 0; public: // Basic constructor IoMan(char *ipcstring); // destructor to clean up all generic stuff ~IoMan(); // enters loop to handle further interaction based on derived class void run(); // setup stuff bool init(); // tries to establish connection, returns error string if applicable bool connect(); // sends a string bool sendJsonString(std::string msg); // returns a single json object as string std::string receiveJsonString(); // disconnect from server void disconnect(); }; #endif