ioman.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #ifndef IOMAN_H
  2. #define IOMAN_H
  3. #include "cmdman.h"
  4. #include "fileman.h"
  5. #include <boost/asio.hpp>
  6. #include <string>
  7. using boost::asio::ip::tcp;
  8. #define BLOCKSIZE 8
  9. class IoMan {
  10. private:
  11. const std::string protoVersion = "0.2";
  12. boost::asio::io_service ios;
  13. boost::asio::streambuf sendbuf;
  14. boost::asio::streambuf recvbuf;
  15. boost::system::error_code errcode;
  16. tcp::socket *tcpsock;
  17. std::string ipstring;
  18. int port;
  19. bool connected;
  20. protected:
  21. CmdMan cmdman;
  22. FileMan fileman;
  23. bool loggedin;
  24. bool parseJson(Json::Value *root, string jsonstring);
  25. virtual bool handleJson(Json::Value root) = 0;
  26. virtual void printErrorMessage(std::string msg) = 0;
  27. virtual void printWelcomeMessage() = 0;
  28. virtual std::string getCmdPrompt() = 0;
  29. virtual std::string getUserPrompt() = 0;
  30. virtual std::string getPassPrompt() = 0;
  31. public:
  32. // Basic constructor
  33. IoMan(char *ipcstring);
  34. // destructor to clean up all generic stuff
  35. ~IoMan();
  36. // enters loop to handle further interaction based on derived class
  37. void run();
  38. // setup stuff
  39. bool init();
  40. // tries to establish connection, returns error string if applicable
  41. bool connect();
  42. // sends a string
  43. bool sendJsonString(std::string msg);
  44. // returns a single json object as string
  45. std::string receiveJsonString();
  46. // disconnect from server
  47. void disconnect();
  48. };
  49. #endif