JsonCommander.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #ifndef JSONCOMMANDER_H
  2. #define JSONCOMMANDER_H
  3. #include <json/json.h>
  4. #include "FileManager.h"
  5. /**
  6. * @class JsonCommander
  7. *
  8. * A class to execute the json commands which were sent by a client.
  9. * It also uses the file manager for writing and reading files.
  10. */
  11. class JsonCommander {
  12. public:
  13. /**
  14. * Action for the json response.
  15. * send - send the json answer
  16. * closeAndSend - send the json answer and close the socket
  17. * close - close the socket
  18. */
  19. enum Action { close, send, closeAndSend };
  20. /**
  21. * Response for commands
  22. *
  23. * If action is set to close json can be uninitialized.
  24. */
  25. struct Response {
  26. Action action;
  27. Json::Value json;
  28. };
  29. /**
  30. * Creates a JsonCommaner
  31. */
  32. JsonCommander(FileManager &fileManager);
  33. /**
  34. * Deletes the JsonCommander
  35. */
  36. ~JsonCommander();
  37. /**
  38. * Executes commands
  39. */
  40. Response execute(const Json::Value &message);
  41. /**
  42. * Does version check before login
  43. */
  44. Response testVersion(const Json::Value &message);
  45. /**
  46. * Checks if login is valid
  47. */
  48. Response checkLogin(const Json::Value &message);
  49. private:
  50. /**
  51. * protocol version of the client server protocol
  52. */
  53. const std::string protocolVersion = "0.2";
  54. /**
  55. * Map of all commands
  56. *
  57. * Used to find the command function fast
  58. */
  59. std::map<std::string, Response (JsonCommander::*)(const Json::Value &)>
  60. commandsMap;
  61. /**
  62. * file manager for reading and writing files
  63. */
  64. FileManager &fileManager;
  65. /**
  66. *
  67. * Last chunk number which was sent.
  68. */
  69. int getFileRemaining;
  70. /**
  71. * Last chunk number which was received.
  72. */
  73. int putFileReceived;
  74. /**
  75. * Executes the status command
  76. */
  77. Response executeStatus(const Json::Value &message);
  78. /**
  79. * Executes the close command
  80. */
  81. Response executeClose(const Json::Value &message);
  82. /**
  83. * Executes the list command
  84. */
  85. Response executeList(const Json::Value &message);
  86. /**
  87. * Executes the put command
  88. */
  89. Response executePut(const Json::Value &message);
  90. /**
  91. * Executes the putdata command
  92. */
  93. Response executePutdata(const Json::Value &message);
  94. /**
  95. * Executes the get command
  96. */
  97. Response executeGet(const Json::Value &message);
  98. /**
  99. * Executes the getdata command
  100. */
  101. Response executeGetdata(const Json::Value &message);
  102. };
  103. #endif