JsonCommander.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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 { send, closeAndSend, close };
  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. * file manager for reading and writing files
  56. */
  57. FileManager &fileManager;
  58. /**
  59. *
  60. * Last chunk number which was sent.
  61. */
  62. int getFileRemaining;
  63. /**
  64. * Last chunk number which was received.
  65. */
  66. int putFileReceived;
  67. /**
  68. * Executes the status command
  69. */
  70. Response executeStatus(const Json::Value &message);
  71. /**
  72. * Executes the close command
  73. */
  74. Response executeClose(const Json::Value &message);
  75. /**
  76. * Executes the list command
  77. */
  78. Response executeList(const Json::Value &message);
  79. /**
  80. * Executes the put command
  81. */
  82. Response executePut(const Json::Value &message);
  83. /**
  84. * Executes the putdata command
  85. */
  86. Response executePutdata(const Json::Value &message);
  87. /**
  88. * Executes the get command
  89. */
  90. Response executeGet(const Json::Value &message);
  91. /**
  92. * Executes the getdata command
  93. */
  94. Response executeGetdata(const Json::Value &message);
  95. };
  96. #endif