AssistantChannel_server_g.h 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. #ifndef __ASSISTANTCHANNEL_SERVER_G_H
  2. #define __ASSISTANTCHANNEL_SERVER_G_H
  3. #pragma once
  4. // This code is generated by spgen tool!
  5. #include "AssistantChannel_def_g.h"
  6. namespace AssistantChannel {
  7. class ChannelService_ServerSessionBase : public CServerSessionBase
  8. {
  9. public:
  10. ChannelService_ServerSessionBase() { }
  11. virtual ~ChannelService_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 ChannelService_Method_Connect:
  19. if (dwSignature == ChannelService_MethodSignature_Connect) {
  20. bOverlap = true;
  21. } else {
  22. Error = Error_MethodSignatureFailed;
  23. }
  24. break;
  25. case ChannelService_Method_Close:
  26. if (dwSignature == ChannelService_MethodSignature_Close) {
  27. bOverlap = true;
  28. } else {
  29. Error = Error_MethodSignatureFailed;
  30. }
  31. break;
  32. case ChannelService_Method_GetState:
  33. if (dwSignature == ChannelService_MethodSignature_GetState) {
  34. bOverlap = true;
  35. } else {
  36. Error = Error_MethodSignatureFailed;
  37. }
  38. break;
  39. case ChannelService_Method_BeginState:
  40. if (dwSignature == ChannelService_MethodSignature_BeginState) {
  41. bOverlap = false;
  42. } else {
  43. Error = Error_MethodSignatureFailed;
  44. }
  45. break;
  46. case ChannelService_Method_EndState:
  47. if (dwSignature == ChannelService_MethodSignature_EndState) {
  48. bOverlap = true;
  49. } else {
  50. Error = Error_MethodSignatureFailed;
  51. }
  52. break;
  53. case ChannelService_Method_Send:
  54. if (dwSignature == ChannelService_MethodSignature_Send) {
  55. bOverlap = true;
  56. } else {
  57. Error = Error_MethodSignatureFailed;
  58. }
  59. break;
  60. case ChannelService_Method_BeginRecv:
  61. if (dwSignature == ChannelService_MethodSignature_BeginRecv) {
  62. bOverlap = false;
  63. } else {
  64. Error = Error_MethodSignatureFailed;
  65. }
  66. break;
  67. case ChannelService_Method_EndRecv:
  68. if (dwSignature == ChannelService_MethodSignature_EndRecv) {
  69. bOverlap = true;
  70. } else {
  71. Error = Error_MethodSignatureFailed;
  72. }
  73. break;
  74. default:
  75. Error = Error_MethodNotFound;
  76. break;
  77. }
  78. return Error;
  79. }
  80. int CheckMessageSignature(DWORD dwMessageID, DWORD dwSignature)
  81. {
  82. ErrorCodeEnum Error = Error_Succeed;
  83. switch (dwMessageID) {
  84. case ChannelService_Method_Connect:
  85. if (dwSignature != ChannelService_MethodSignature_Connect) {
  86. Error = Error_MethodSignatureFailed;
  87. }
  88. break;
  89. case ChannelService_Method_Close:
  90. if (dwSignature != ChannelService_MethodSignature_Close) {
  91. Error = Error_MethodSignatureFailed;
  92. }
  93. break;
  94. case ChannelService_Method_GetState:
  95. if (dwSignature != ChannelService_MethodSignature_GetState) {
  96. Error = Error_MethodSignatureFailed;
  97. }
  98. break;
  99. case ChannelService_Method_BeginState:
  100. if (dwSignature != ChannelService_MethodSignature_BeginState) {
  101. Error = Error_MethodSignatureFailed;
  102. }
  103. break;
  104. case ChannelService_Method_EndState:
  105. if (dwSignature != ChannelService_MethodSignature_EndState) {
  106. Error = Error_MethodSignatureFailed;
  107. }
  108. break;
  109. case ChannelService_Method_Send:
  110. if (dwSignature != ChannelService_MethodSignature_Send) {
  111. Error = Error_MethodSignatureFailed;
  112. }
  113. break;
  114. case ChannelService_Method_BeginRecv:
  115. if (dwSignature != ChannelService_MethodSignature_BeginRecv) {
  116. Error = Error_MethodSignatureFailed;
  117. }
  118. break;
  119. case ChannelService_Method_EndRecv:
  120. if (dwSignature != ChannelService_MethodSignature_EndRecv) {
  121. Error = Error_MethodSignatureFailed;
  122. }
  123. break;
  124. default:
  125. Error = Error_MethodNotFound;
  126. break;
  127. }
  128. return Error;
  129. }
  130. virtual void Handle_Connect(SpReqAnsContext<ChannelService_Connect_Req, ChannelService_Connect_Ans>::Pointer ctx)
  131. {
  132. /// override by user
  133. }
  134. virtual void Handle_Close(SpReqAnsContext<ChannelService_Close_Req, ChannelService_Close_Ans>::Pointer ctx)
  135. {
  136. /// override by user
  137. }
  138. virtual void Handle_GetState(SpReqAnsContext<ChannelService_GetState_Req, ChannelService_GetState_Ans>::Pointer ctx)
  139. {
  140. /// override by user
  141. }
  142. virtual void Handle_BeginState(SpSubscribeContext<ChannelService_BeginState_Sub, ChannelService_State_Info>::Pointer ctx)
  143. {
  144. /// override by user
  145. }
  146. virtual void Handle_EndState(SpOnewayCallContext<ChannelService_EndState_Info>::Pointer ctx)
  147. {
  148. /// override by user
  149. }
  150. virtual void Handle_Send(SpOnewayCallContext<ChannelService_Send_Info>::Pointer ctx)
  151. {
  152. /// override by user
  153. }
  154. virtual void Handle_BeginRecv(SpSubscribeContext<ChannelService_BeginRecv_Sub, ChannelService_Packet_Info>::Pointer ctx)
  155. {
  156. /// override by user
  157. }
  158. virtual void Handle_EndRecv(SpOnewayCallContext<ChannelService_EndRecv_Info>::Pointer ctx)
  159. {
  160. /// override by user
  161. }
  162. virtual void OnRequest(CSmartPointer<ITransactionContext> pTransactionContext)
  163. {
  164. CAutoBuffer Buf;
  165. DWORD dwMessageID;
  166. DWORD dwMessageSignature;
  167. ErrorCodeEnum Error = pTransactionContext->GetReceiveBuffer(dwMessageID, dwMessageSignature, Buf);
  168. if (Error == Error_Succeed) {
  169. #ifdef DEBUG
  170. assert(CheckMessageSignature(dwMessageID, dwMessageSignature) == Error_Succeed);
  171. #else
  172. if (CheckMessageSignature(dwMessageID, dwMessageSignature) != Error_Succeed) {
  173. pTransactionContext->SendAnswer(Error_MethodSignatureFailed);
  174. return;
  175. }
  176. #endif
  177. switch (dwMessageID) {
  178. case ChannelService_Method_Connect:
  179. {
  180. SpReqAnsContext<ChannelService_Connect_Req,ChannelService_Connect_Ans>::Pointer ctx;
  181. ctx.Attach(new SpReqAnsContext<ChannelService_Connect_Req,ChannelService_Connect_Ans>(pTransactionContext));
  182. SpBuffer2Object(Buf, ctx->Req);
  183. Handle_Connect(ctx);
  184. }
  185. break;
  186. case ChannelService_Method_Close:
  187. {
  188. SpReqAnsContext<ChannelService_Close_Req,ChannelService_Close_Ans>::Pointer ctx;
  189. ctx.Attach(new SpReqAnsContext<ChannelService_Close_Req,ChannelService_Close_Ans>(pTransactionContext));
  190. SpBuffer2Object(Buf, ctx->Req);
  191. Handle_Close(ctx);
  192. }
  193. break;
  194. case ChannelService_Method_GetState:
  195. {
  196. SpReqAnsContext<ChannelService_GetState_Req,ChannelService_GetState_Ans>::Pointer ctx;
  197. ctx.Attach(new SpReqAnsContext<ChannelService_GetState_Req,ChannelService_GetState_Ans>(pTransactionContext));
  198. SpBuffer2Object(Buf, ctx->Req);
  199. Handle_GetState(ctx);
  200. }
  201. break;
  202. case ChannelService_Method_BeginState:
  203. {
  204. SpSubscribeContext<ChannelService_BeginState_Sub,ChannelService_State_Info>::Pointer ctx;
  205. ctx.Attach(new SpSubscribeContext<ChannelService_BeginState_Sub,ChannelService_State_Info>(pTransactionContext));
  206. SpBuffer2Object(Buf, ctx->Req);
  207. Handle_BeginState(ctx);
  208. }
  209. break;
  210. case ChannelService_Method_EndState:
  211. {
  212. SpOnewayCallContext<ChannelService_EndState_Info>::Pointer ctx;
  213. ctx.Attach(new SpOnewayCallContext<ChannelService_EndState_Info>());
  214. SpBuffer2Object(Buf, ctx->Info);
  215. Handle_EndState(ctx);
  216. }
  217. break;
  218. case ChannelService_Method_Send:
  219. {
  220. SpOnewayCallContext<ChannelService_Send_Info>::Pointer ctx;
  221. ctx.Attach(new SpOnewayCallContext<ChannelService_Send_Info>());
  222. SpBuffer2Object(Buf, ctx->Info);
  223. Handle_Send(ctx);
  224. }
  225. break;
  226. case ChannelService_Method_BeginRecv:
  227. {
  228. SpSubscribeContext<ChannelService_BeginRecv_Sub,ChannelService_Packet_Info>::Pointer ctx;
  229. ctx.Attach(new SpSubscribeContext<ChannelService_BeginRecv_Sub,ChannelService_Packet_Info>(pTransactionContext));
  230. SpBuffer2Object(Buf, ctx->Req);
  231. Handle_BeginRecv(ctx);
  232. }
  233. break;
  234. case ChannelService_Method_EndRecv:
  235. {
  236. SpOnewayCallContext<ChannelService_EndRecv_Info>::Pointer ctx;
  237. ctx.Attach(new SpOnewayCallContext<ChannelService_EndRecv_Info>());
  238. SpBuffer2Object(Buf, ctx->Info);
  239. Handle_EndRecv(ctx);
  240. }
  241. break;
  242. default:
  243. assert(0);
  244. break;
  245. }
  246. } else {
  247. pTransactionContext->SendAnswer(Error);
  248. }
  249. }
  250. };
  251. ///////////////////////////
  252. } // namespace AssistantChannel
  253. #endif // __ASSISTANTCHANNEL_SERVER_G_H