AssistantChannel_server_g.h 8.4 KB

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