/netty-protobuf-rpc/src/main/java/com/googlecode/protobuf/netty/example/CalculatorServiceImpl.java

http://netty-protobuf-rpc.googlecode.com/ · Java · 136 lines · 94 code · 13 blank · 29 comment · 22 complexity · cd4595e8c2df94616b059359396f3bba MD5 · raw file

  1. /*
  2. * Copyright (c) 2009 Stephen Tu <stephen_tu@berkeley.edu>
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy
  5. * of this software and associated documentation files (the "Software"), to deal
  6. * in the Software without restriction, including without limitation the rights
  7. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  8. * copies of the Software, and to permit persons to whom the Software is
  9. * furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  20. * THE SOFTWARE.
  21. */
  22. package com.googlecode.protobuf.netty.example;
  23. import org.apache.log4j.Logger;
  24. import com.google.protobuf.RpcCallback;
  25. import com.google.protobuf.RpcController;
  26. import com.google.protobuf.ServiceException;
  27. import com.googlecode.protobuf.netty.example.Calculator.CalcRequest;
  28. import com.googlecode.protobuf.netty.example.Calculator.CalcResponse;
  29. public class CalculatorServiceImpl implements Calculator.CalcService.Interface, Calculator.CalcService.BlockingInterface {
  30. private static final Logger logger = Logger.getLogger(CalculatorServiceImpl.class);
  31. public void add(RpcController controller, CalcRequest request,
  32. RpcCallback<CalcResponse> done) {
  33. CalcResponse response = null;
  34. try {
  35. response = add(controller, request);
  36. } catch (ServiceException e) { }
  37. if (done != null) {
  38. done.run(response);
  39. } else {
  40. // Since no callback registered, might as well spit out the
  41. // answer here otherwise we'll never know what happened
  42. if (response == null)
  43. logger.info("Error occured");
  44. else
  45. logger.info("Answer is: " + response.getResult());
  46. }
  47. }
  48. public void divide(RpcController controller, CalcRequest request,
  49. RpcCallback<CalcResponse> done) {
  50. CalcResponse response = null;
  51. try {
  52. response = divide(controller, request);
  53. } catch (ServiceException e) { }
  54. if (done != null) {
  55. done.run(response);
  56. } else {
  57. // Since no callback registered, might as well spit out the
  58. // answer here otherwise we'll never know what happened
  59. if (response == null)
  60. logger.info("Error occured");
  61. else
  62. logger.info("Answer is: " + response.getResult());
  63. }
  64. }
  65. public void multiply(RpcController controller, CalcRequest request,
  66. RpcCallback<CalcResponse> done) {
  67. CalcResponse response = null;
  68. try {
  69. response = multiply(controller, request);
  70. } catch (ServiceException e) { }
  71. if (done != null) {
  72. done.run(response);
  73. } else {
  74. // Since no callback registered, might as well spit out the
  75. // answer here otherwise we'll never know what happened
  76. if (response == null)
  77. logger.info("Error occured");
  78. else
  79. logger.info("Answer is: " + response.getResult());
  80. }
  81. }
  82. public void subtract(RpcController controller, CalcRequest request,
  83. RpcCallback<CalcResponse> done) {
  84. CalcResponse response = null;
  85. try {
  86. response = subtract(controller, request);
  87. } catch (ServiceException e) { }
  88. if (done != null) {
  89. done.run(response);
  90. } else {
  91. // Since no callback registered, might as well spit out the
  92. // answer here otherwise we'll never know what happened
  93. if (response == null)
  94. logger.info("Error occured");
  95. else
  96. logger.info("Answer is: " + response.getResult());
  97. }
  98. }
  99. public CalcResponse add(RpcController controller, CalcRequest request)
  100. throws ServiceException {
  101. int answer = request.getOp1() + request.getOp2();
  102. return CalcResponse.newBuilder().setResult(answer).build();
  103. }
  104. public CalcResponse divide(RpcController controller, CalcRequest request)
  105. throws ServiceException {
  106. if (request.getOp2() == 0) {
  107. controller.setFailed("Cannot divide by zero");
  108. throw new ServiceException("Cannot divide by zero");
  109. }
  110. int answer = request.getOp1() / request.getOp2();
  111. return CalcResponse.newBuilder().setResult(answer).build();
  112. }
  113. public CalcResponse multiply(RpcController controller, CalcRequest request)
  114. throws ServiceException {
  115. int answer = request.getOp1() * request.getOp2();
  116. return CalcResponse.newBuilder().setResult(answer).build();
  117. }
  118. public CalcResponse subtract(RpcController controller, CalcRequest request)
  119. throws ServiceException {
  120. int answer = request.getOp1() - request.getOp2();
  121. return CalcResponse.newBuilder().setResult(answer).build();
  122. }
  123. }