ZoneManagerI.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. using Ice;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Web.Helpers;
  5. using CommonLang.Log;
  6. using System.Collections;
  7. using Pomelo.JSGModule;
  8. namespace Pomelo
  9. {
  10. class ZoneManagerI : ZoneManagerDisp_
  11. {
  12. private IZone zone;
  13. public ZoneManagerI(IZone zone)
  14. {
  15. this.zone = zone;
  16. }
  17. private CommonLang.Log.Logger log = LoggerFactory.GetLogger("ZoneManagerI");
  18. public override int setCallback(Identity ident, string srvUUID, Current current__)
  19. {
  20. string gameSrvId = ident.name;
  21. if (string.IsNullOrEmpty(gameSrvId) || string.IsNullOrEmpty(srvUUID))
  22. {
  23. return GSBindResult.PARAM_ERROR;
  24. }
  25. //current__.con.setCallback();
  26. Ice.ObjectPrx @base = current__.con.createProxy(ident);
  27. ZoneManagerCallbackPrx client = ZoneManagerCallbackPrxHelper.uncheckedCast(@base);
  28. int resCode = IceManager.instance().setCallback(ident.name, srvUUID, client, (ZoneManagerCallbackPrx)client.ice_oneway());
  29. zone.SetCallBack(ident.name);
  30. return resCode;
  31. }
  32. public void closed(Ice.Connection con)
  33. {
  34. try
  35. {
  36. }
  37. catch (Ice.LocalException)
  38. {
  39. // The client already destroyed this session, or the server is shutting down
  40. }
  41. }
  42. public override void createZoneRequest_async(AMD_ZoneManager_createZoneRequest cb__, string playerId, string gameServerId,
  43. int mapTemplateId, string instanceId, bool forceCreate, string data, Current current__)
  44. {
  45. try
  46. {
  47. //log.Info("createZone begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  48. zone.CreateZone(playerId, gameServerId, mapTemplateId, instanceId, forceCreate, data,
  49. (ret) => { cb__.ice_response(); },
  50. (err) => { cb__.ice_exception(err); }
  51. );
  52. } catch (System.Exception e){
  53. log.Error("CreateZone failed, error: " + e.Message, e);
  54. cb__.ice_exception(e);
  55. }
  56. }
  57. public override void destroyZoneRequest_async(AMD_ZoneManager_destroyZoneRequest cb__, string instanceId, Current current__)
  58. {
  59. try
  60. {
  61. //log.Info("destroyZone begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  62. zone.DestroyZone(instanceId, (err, ret) =>
  63. {
  64. if (err != null)
  65. {
  66. cb__.ice_exception(err);
  67. }
  68. else
  69. {
  70. cb__.ice_response();
  71. }
  72. //log.Debug("destroyZone end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  73. });
  74. } catch (System.Exception e)
  75. {
  76. log.Error("stop failed, error: " + e.Message, e);
  77. cb__.ice_exception(e);
  78. }
  79. }
  80. public override void playerEnterRequest_async(AMD_ZoneManager_playerEnterRequest cb__, string playerId, string instanceId, string data, Current current__)
  81. {
  82. try
  83. {
  84. //log.Info("playerEnter begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  85. zone.PlayerEnter(playerId, instanceId, data, (err, ret) =>
  86. {
  87. if (err != null)
  88. {
  89. cb__.ice_exception(err);
  90. }
  91. else
  92. {
  93. cb__.ice_response();
  94. }
  95. //log.Debug("playerEnter end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  96. });
  97. } catch (System.Exception e)
  98. {
  99. log.Error("add player failed, error: " + playerId + ", " + instanceId + ", " + e.Message, e);
  100. cb__.ice_exception(e);
  101. }
  102. }
  103. public override void playerLeaveRequest_async(AMD_ZoneManager_playerLeaveRequest cb__, string playerId, string instanceId, bool keepObject, Current current__)
  104. {
  105. try
  106. {
  107. //log.Info("playerLeave begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  108. zone.PlayerLeave(playerId, instanceId, keepObject, (err, ret) =>
  109. {
  110. if (err != null)
  111. {
  112. cb__.ice_exception(err);
  113. }
  114. else
  115. {
  116. cb__.ice_response();
  117. }
  118. //log.Debug("playerLeave end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  119. });
  120. } catch (System.Exception e)
  121. {
  122. log.Error("playerLeave failed, error: " + e.Message, e);
  123. cb__.ice_exception(e);
  124. }
  125. }
  126. public override void playerNetStateChanged_async(AMD_ZoneManager_playerNetStateChanged cb__, string playerId, string state, Current current__)
  127. {
  128. try
  129. {
  130. zone.PlayerNetStateChanged(playerId, state);
  131. cb__.ice_response();
  132. }
  133. catch (System.Exception err)
  134. {
  135. cb__.ice_exception(err);
  136. }
  137. }
  138. public override void clearAllPlayersRequest_async(AMD_ZoneManager_clearAllPlayersRequest cb__, Current current__)
  139. {
  140. //log.Info("clearAllPlayers begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  141. zone.ClearAllPlayers((err, ret) =>
  142. {
  143. if (err != null)
  144. {
  145. cb__.ice_exception(err);
  146. }
  147. else
  148. {
  149. cb__.ice_response();
  150. }
  151. log.Debug("clearAllPlayers end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  152. });
  153. }
  154. public override void getAllPlayerCountRequest_async(AMD_ZoneManager_getAllPlayerCountRequest cb__, Current current__)
  155. {
  156. //log.Info("getAllPlayerCount begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  157. zone.GetAllPlayerCount((err, ret) =>
  158. {
  159. if (err != null)
  160. {
  161. cb__.ice_exception(err);
  162. }
  163. else
  164. {
  165. cb__.ice_response(ret);
  166. }
  167. log.Debug("getAllPlayerCount end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  168. });
  169. }
  170. public override void getServerState_async(AMD_ZoneManager_getServerState cb__, string serverID, Current current__)
  171. {
  172. //log.Info("getServerState_async begin:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  173. zone.GetServerState(serverID, (err, ret) =>
  174. {
  175. if (err != null)
  176. {
  177. cb__.ice_exception(err);
  178. }
  179. else
  180. {
  181. cb__.ice_response(/*Json.Encode(ret)*/);
  182. }
  183. log.Debug("getServerState_async end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  184. });
  185. }
  186. public override void registerGameServer_async(Pomelo.AMD_ZoneManager_registerGameServer cb__, int serverid, int crossid, Ice.Current current__)
  187. {
  188. zone.RegisterGameServer(serverid, crossid, (err, ret) =>
  189. {
  190. if (err != null)
  191. {
  192. cb__.ice_exception(err);
  193. }
  194. else
  195. {
  196. cb__.ice_response(/*ret*/);
  197. }
  198. // log.Debug("getServerState_async end:" + System.Threading.Thread.CurrentThread.ManagedThreadId);
  199. });
  200. }
  201. public override void getUnitHP_async(AMD_ZoneManager_getUnitHP cb__, string instanceId, int objectId, Current current__)
  202. {
  203. zone.GetUnitHP(instanceId, objectId, (err, ret) =>
  204. {
  205. if (err != null)
  206. {
  207. cb__.ice_exception(err);
  208. }
  209. else
  210. {
  211. cb__.ice_response(/*ret*/);
  212. }
  213. });
  214. }
  215. }
  216. }