1
0

calc.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #ifndef HV_PROTO_RPC_HANDLER_CALC_H_
  2. #define HV_PROTO_RPC_HANDLER_CALC_H_
  3. #include "../router.h"
  4. #include "../generated/calc.pb.h"
  5. void calc_add(const protorpc::Request& req, protorpc::Response* res) {
  6. // params
  7. if (req.params_size() != 2) {
  8. return bad_request(req, res);
  9. }
  10. protorpc::CalcParam param1, param2;
  11. if (!param1.ParseFromString(req.params(0)) ||
  12. !param2.ParseFromString(req.params(1))) {
  13. return bad_request(req, res);
  14. }
  15. // result
  16. protorpc::CalcResult result;
  17. result.set_num(param1.num() + param2.num());
  18. res->set_result(result.SerializeAsString());
  19. }
  20. void calc_sub(const protorpc::Request& req, protorpc::Response* res) {
  21. // params
  22. if (req.params_size() != 2) {
  23. return bad_request(req, res);
  24. }
  25. protorpc::CalcParam param1, param2;
  26. if (!param1.ParseFromString(req.params(0)) ||
  27. !param2.ParseFromString(req.params(1))) {
  28. return bad_request(req, res);
  29. }
  30. // result
  31. protorpc::CalcResult result;
  32. result.set_num(param1.num() - param2.num());
  33. res->set_result(result.SerializeAsString());
  34. }
  35. void calc_mul(const protorpc::Request& req, protorpc::Response* res) {
  36. // params
  37. if (req.params_size() != 2) {
  38. return bad_request(req, res);
  39. }
  40. protorpc::CalcParam param1, param2;
  41. if (!param1.ParseFromString(req.params(0)) ||
  42. !param2.ParseFromString(req.params(1))) {
  43. return bad_request(req, res);
  44. }
  45. // result
  46. protorpc::CalcResult result;
  47. result.set_num(param1.num() * param2.num());
  48. res->set_result(result.SerializeAsString());
  49. }
  50. void calc_div(const protorpc::Request& req, protorpc::Response* res) {
  51. // params
  52. if (req.params_size() != 2) {
  53. return bad_request(req, res);
  54. }
  55. protorpc::CalcParam param1, param2;
  56. if (!param1.ParseFromString(req.params(0)) ||
  57. !param2.ParseFromString(req.params(1))) {
  58. return bad_request(req, res);
  59. }
  60. if (param2.num() == 0) {
  61. return bad_request(req, res);
  62. }
  63. // result
  64. protorpc::CalcResult result;
  65. result.set_num(param1.num() / param2.num());
  66. res->set_result(result.SerializeAsString());
  67. }
  68. #endif // HV_PROTO_RPC_HANDLER_CALC_H_