#ifndef HV_PROTO_RPC_HANDLER_CALC_H_ #define HV_PROTO_RPC_HANDLER_CALC_H_ #include "../router.h" #include "../generated/calc.pb.h" void calc_add(const protorpc::Request& req, protorpc::Response* res) { // params if (req.params_size() != 2) { return bad_request(req, res); } protorpc::CalcParam param1, param2; if (!param1.ParseFromString(req.params(0)) || !param2.ParseFromString(req.params(1))) { return bad_request(req, res); } // result protorpc::CalcResult result; result.set_num(param1.num() + param2.num()); res->set_result(result.SerializeAsString()); } void calc_sub(const protorpc::Request& req, protorpc::Response* res) { // params if (req.params_size() != 2) { return bad_request(req, res); } protorpc::CalcParam param1, param2; if (!param1.ParseFromString(req.params(0)) || !param2.ParseFromString(req.params(1))) { return bad_request(req, res); } // result protorpc::CalcResult result; result.set_num(param1.num() - param2.num()); res->set_result(result.SerializeAsString()); } void calc_mul(const protorpc::Request& req, protorpc::Response* res) { // params if (req.params_size() != 2) { return bad_request(req, res); } protorpc::CalcParam param1, param2; if (!param1.ParseFromString(req.params(0)) || !param2.ParseFromString(req.params(1))) { return bad_request(req, res); } // result protorpc::CalcResult result; result.set_num(param1.num() * param2.num()); res->set_result(result.SerializeAsString()); } void calc_div(const protorpc::Request& req, protorpc::Response* res) { // params if (req.params_size() != 2) { return bad_request(req, res); } protorpc::CalcParam param1, param2; if (!param1.ParseFromString(req.params(0)) || !param2.ParseFromString(req.params(1))) { return bad_request(req, res); } if (param2.num() == 0) { return bad_request(req, res); } // result protorpc::CalcResult result; result.set_num(param1.num() / param2.num()); res->set_result(result.SerializeAsString()); } #endif // HV_PROTO_RPC_HANDLER_CALC_H_