cmd_read.cpp 941 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "cmd_read.h"
  2. #include <exception>
  3. using std::exception;
  4. cmd_read::cmd_read()
  5. {
  6. }
  7. cmd_read::~cmd_read()
  8. {
  9. }
  10. command_type cmd_read::get_command()
  11. {
  12. return command_type::READ_CMD;
  13. }
  14. response cmd_read::perform(request *req)
  15. {
  16. vector<sensor_data> *data;
  17. int sensor_id;
  18. memset(&res, 0, sizeof res);
  19. res.type = get_command();
  20. try {
  21. data = get_user_db(req->request_u.existing.session_key);
  22. } catch (exception &e) {
  23. res.response_u.read.response = status::INVALID_SESSION_KEY;
  24. return res;
  25. }
  26. sensor_id = req->request_u.existing.sensor_id;
  27. for (auto it = data->begin(); it != data->end(); it++) {
  28. if (it->sensor_id == sensor_id) {
  29. res.response_u.read.response = status::VALID;
  30. res.response_u.read.values.values_val =
  31. it->values.values_val;
  32. res.response_u.read.values.values_len =
  33. it->values.values_len;
  34. return res;
  35. }
  36. }
  37. res.response_u.read.response = status::NO_DATA_FOUND;
  38. return res;
  39. }