HeartBeat_server_g.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. #ifndef __HEARTBEAT_SERVER_G_H
  2. #define __HEARTBEAT_SERVER_G_H
  3. #pragma once
  4. // This code is generated by spgen tool!
  5. #include "HeartBeat_def_g.h"
  6. namespace HeartBeat {
  7. class HeartBeatService_ServerSessionBase : public CServerSessionBase
  8. {
  9. public:
  10. HeartBeatService_ServerSessionBase() { }
  11. virtual ~HeartBeatService_ServerSessionBase() { }
  12. virtual bool IsExclusive() { return false; }
  13. virtual bool IsSessionOverlap() { return true; }
  14. virtual ErrorCodeEnum GetMessageAttr(DWORD dwMessageID, DWORD dwSignature, bool &bOverlap)
  15. {
  16. ErrorCodeEnum Error = Error_Succeed;
  17. switch (dwMessageID) {
  18. case HeartBeatService_Method_Instruction:
  19. if (dwSignature == HeartBeatService_MethodSignature_Instruction) {
  20. bOverlap = true;
  21. } else {
  22. Error = Error_MethodSignatureFailed;
  23. }
  24. break;
  25. case HeartBeatService_Method_CardActive:
  26. if (dwSignature == HeartBeatService_MethodSignature_CardActive) {
  27. bOverlap = true;
  28. } else {
  29. Error = Error_MethodSignatureFailed;
  30. }
  31. break;
  32. case HeartBeatService_Method_CrossTermCall:
  33. if (dwSignature == HeartBeatService_MethodSignature_CrossTermCall) {
  34. bOverlap = true;
  35. } else {
  36. Error = Error_MethodSignatureFailed;
  37. }
  38. break;
  39. case HeartBeatService_Method_CrossTermInvokeInfo:
  40. if (dwSignature == HeartBeatService_MethodSignature_CrossTermInvokeInfo) {
  41. bOverlap = true;
  42. } else {
  43. Error = Error_MethodSignatureFailed;
  44. }
  45. break;
  46. case HeartBeatService_Method_CallFromILToRVC:
  47. if (dwSignature == HeartBeatService_MethodSignature_CallFromILToRVC) {
  48. bOverlap = true;
  49. } else {
  50. Error = Error_MethodSignatureFailed;
  51. }
  52. break;
  53. case HeartBeatService_Method_CallResultToIL:
  54. if (dwSignature == HeartBeatService_MethodSignature_CallResultToIL) {
  55. bOverlap = true;
  56. } else {
  57. Error = Error_MethodSignatureFailed;
  58. }
  59. break;
  60. default:
  61. Error = Error_MethodNotFound;
  62. break;
  63. }
  64. return Error;
  65. }
  66. int CheckMessageSignature(DWORD dwMessageID, DWORD dwSignature)
  67. {
  68. ErrorCodeEnum Error = Error_Succeed;
  69. switch (dwMessageID) {
  70. case HeartBeatService_Method_Instruction:
  71. if (dwSignature != HeartBeatService_MethodSignature_Instruction) {
  72. Error = Error_MethodSignatureFailed;
  73. }
  74. break;
  75. case HeartBeatService_Method_CardActive:
  76. if (dwSignature != HeartBeatService_MethodSignature_CardActive) {
  77. Error = Error_MethodSignatureFailed;
  78. }
  79. break;
  80. case HeartBeatService_Method_CrossTermCall:
  81. if (dwSignature != HeartBeatService_MethodSignature_CrossTermCall) {
  82. Error = Error_MethodSignatureFailed;
  83. }
  84. break;
  85. case HeartBeatService_Method_CrossTermInvokeInfo:
  86. if (dwSignature != HeartBeatService_MethodSignature_CrossTermInvokeInfo) {
  87. Error = Error_MethodSignatureFailed;
  88. }
  89. break;
  90. case HeartBeatService_Method_CallFromILToRVC:
  91. if (dwSignature != HeartBeatService_MethodSignature_CallFromILToRVC) {
  92. Error = Error_MethodSignatureFailed;
  93. }
  94. break;
  95. case HeartBeatService_Method_CallResultToIL:
  96. if (dwSignature != HeartBeatService_MethodSignature_CallResultToIL) {
  97. Error = Error_MethodSignatureFailed;
  98. }
  99. break;
  100. default:
  101. Error = Error_MethodNotFound;
  102. break;
  103. }
  104. return Error;
  105. }
  106. virtual void Handle_Instruction(SpReqAnsContext<HeartBeatService_Instruction_Req, HeartBeatService_Instruction_Ans>::Pointer ctx)
  107. {
  108. /// override by user
  109. }
  110. virtual void Handle_CardActive(SpReqAnsContext<HeartBeatService_CardActive_Req, HeartBeatService_CardActive_Ans>::Pointer ctx)
  111. {
  112. /// override by user
  113. }
  114. virtual void Handle_CrossTermCall(SpReqAnsContext<HeartBeatService_CrossTermCall_Req, HeartBeatService_CrossTermCall_Ans>::Pointer ctx)
  115. {
  116. /// override by user
  117. }
  118. virtual void Handle_CrossTermInvokeInfo(SpOnewayCallContext<HeartBeatService_CrossTermInvokeInfo_Info>::Pointer ctx)
  119. {
  120. /// override by user
  121. }
  122. virtual void Handle_CallFromILToRVC(SpOnewayCallContext<HeartBeatService_CallFromILToRVC_Info>::Pointer ctx)
  123. {
  124. /// override by user
  125. }
  126. virtual void Handle_CallResultToIL(SpOnewayCallContext<HeartBeatService_CallResultToIL_Info>::Pointer ctx)
  127. {
  128. /// override by user
  129. }
  130. virtual void OnRequest(CSmartPointer<ITransactionContext> pTransactionContext)
  131. {
  132. CAutoBuffer Buf;
  133. DWORD dwMessageID;
  134. DWORD dwMessageSignature;
  135. ErrorCodeEnum Error = pTransactionContext->GetReceiveBuffer(dwMessageID, dwMessageSignature, Buf);
  136. if (Error == Error_Succeed) {
  137. #ifdef DEBUG
  138. assert(CheckMessageSignature(dwMessageID, dwMessageSignature) == Error_Succeed);
  139. #else
  140. if (CheckMessageSignature(dwMessageID, dwMessageSignature) != Error_Succeed) {
  141. pTransactionContext->SendAnswer(Error_MethodSignatureFailed);
  142. return;
  143. }
  144. #endif
  145. switch (dwMessageID) {
  146. case HeartBeatService_Method_Instruction:
  147. {
  148. SpReqAnsContext<HeartBeatService_Instruction_Req,HeartBeatService_Instruction_Ans>::Pointer ctx;
  149. ctx.Attach(new SpReqAnsContext<HeartBeatService_Instruction_Req,HeartBeatService_Instruction_Ans>(pTransactionContext));
  150. SpBuffer2Object(Buf, ctx->Req);
  151. Handle_Instruction(ctx);
  152. }
  153. break;
  154. case HeartBeatService_Method_CardActive:
  155. {
  156. SpReqAnsContext<HeartBeatService_CardActive_Req,HeartBeatService_CardActive_Ans>::Pointer ctx;
  157. ctx.Attach(new SpReqAnsContext<HeartBeatService_CardActive_Req,HeartBeatService_CardActive_Ans>(pTransactionContext));
  158. SpBuffer2Object(Buf, ctx->Req);
  159. Handle_CardActive(ctx);
  160. }
  161. break;
  162. case HeartBeatService_Method_CrossTermCall:
  163. {
  164. SpReqAnsContext<HeartBeatService_CrossTermCall_Req,HeartBeatService_CrossTermCall_Ans>::Pointer ctx;
  165. ctx.Attach(new SpReqAnsContext<HeartBeatService_CrossTermCall_Req,HeartBeatService_CrossTermCall_Ans>(pTransactionContext));
  166. SpBuffer2Object(Buf, ctx->Req);
  167. Handle_CrossTermCall(ctx);
  168. }
  169. break;
  170. case HeartBeatService_Method_CrossTermInvokeInfo:
  171. {
  172. SpOnewayCallContext<HeartBeatService_CrossTermInvokeInfo_Info>::Pointer ctx;
  173. ctx.Attach(new SpOnewayCallContext<HeartBeatService_CrossTermInvokeInfo_Info>());
  174. SpBuffer2Object(Buf, ctx->Info);
  175. Handle_CrossTermInvokeInfo(ctx);
  176. }
  177. break;
  178. case HeartBeatService_Method_CallFromILToRVC:
  179. {
  180. SpOnewayCallContext<HeartBeatService_CallFromILToRVC_Info>::Pointer ctx;
  181. ctx.Attach(new SpOnewayCallContext<HeartBeatService_CallFromILToRVC_Info>());
  182. SpBuffer2Object(Buf, ctx->Info);
  183. Handle_CallFromILToRVC(ctx);
  184. }
  185. break;
  186. case HeartBeatService_Method_CallResultToIL:
  187. {
  188. SpOnewayCallContext<HeartBeatService_CallResultToIL_Info>::Pointer ctx;
  189. ctx.Attach(new SpOnewayCallContext<HeartBeatService_CallResultToIL_Info>());
  190. SpBuffer2Object(Buf, ctx->Info);
  191. Handle_CallResultToIL(ctx);
  192. }
  193. break;
  194. default:
  195. assert(0);
  196. break;
  197. }
  198. } else {
  199. pTransactionContext->SendAnswer(Error);
  200. }
  201. }
  202. };
  203. ///////////////////////////
  204. } // namespace HeartBeat
  205. #endif // __HEARTBEAT_SERVER_G_H