GUINetworkUtil.lua 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. local GUINetworkUtil = class("GUINetworkUtil")
  2. local cjson = require("cjson")
  3. function GUINetworkUtil:ctor()
  4. self.handlers = {}
  5. self.luahandlers = {}
  6. local networkCtl = LuaNetworkController:Inst()
  7. local msgType = global.MsgType
  8. LuaRegisterMsgHandler( msgType.MSG_SC_SSR_NETWORK_RESPONSE, handler( self, self.handle_MSG_SC_SSR_NETWORK_RESPONSE ) )
  9. LuaRegisterMsgHandler( msgType.MSG_SC_SSR_LUA_NETWORK_RESPONSE, handler( self, self.MSG_SC_SSR_LUA_NETWORK_RESPONSE ) )
  10. local CodeDOMUIProxy = global.Facade:retrieveProxy(global.ProxyTable.CodeDOMUIProxy)
  11. CodeDOMUIProxy:InitTXTUI(self)
  12. end
  13. function GUINetworkUtil:handle_MSG_SC_SSR_NETWORK_RESPONSE( msg )
  14. local msgHdr = msg:GetHeader()
  15. local msgLen = msg:GetDataLength()
  16. local msgData = (msgLen > 0 and msg:GetData():ReadString(msgLen) or nil)
  17. self:OnMessage(msgHdr.recog, msgData)
  18. end
  19. function GUINetworkUtil:RegisterNetworkHandler( msgID, netCB )
  20. self.handlers[msgID] = netCB
  21. end
  22. function GUINetworkUtil:UnRegisterNetworkHandler(msgID)
  23. self.handlers[msgID] = nil
  24. end
  25. function GUINetworkUtil:OnMessage( msgID, msgData )
  26. SL:Print("[GUI LOG] OnMessage", msgID, msgData)
  27. local handler = self.handlers[msgID]
  28. if not handler then
  29. SL:Print( "[GUI LOG] GUINetworkUtil:OnMessage, Invaild handler, " .. msgID )
  30. return nil
  31. end
  32. handler( msgID, msgData )
  33. end
  34. function GUINetworkUtil:SendMsg( msgID, sendData, p1, p2, p3 )
  35. SL:Print("[GUI LOG] SendMsg", msgID, sendData, p1, p2, p3)
  36. if not msgID then
  37. SL:Print( "[GUI LOG] GUINetworkUtil:SendMsg, Invaild args, ", msgID )
  38. return nil
  39. end
  40. p1 = p1 or 0
  41. p2 = p2 or 0
  42. p3 = p3 or 0
  43. sendData = sendData or ""
  44. -- 类型容错
  45. local sendDataType = type(sendData)
  46. if sendDataType == "table" then
  47. sendData = cjson.encode(sendData)
  48. elseif sendDataType ~= "string" then
  49. sendData = tostring(sendData)
  50. end
  51. LuaSendMsg( global.MsgType.MSG_CS_SSR_NETWORK_REQUEST, msgID, p1, p2, p3, sendData, string.len( sendData ) )
  52. if SL._DEBUG then
  53. if string.len(sendData) > 4096 then
  54. SL:Print("[GUI ERROR], GUINetwork send string too long!!!", string.len(sendData), sendData)
  55. PrintTraceback()
  56. end
  57. end
  58. end
  59. ---------------------------------------------------------------------
  60. --- lua msg
  61. function GUINetworkUtil:MSG_SC_SSR_LUA_NETWORK_RESPONSE( msg )
  62. local msgHdr = msg:GetHeader()
  63. local msgLen = msg:GetDataLength()
  64. local msgData = (msgLen > 0 and msg:GetData():ReadString(msgLen) or nil)
  65. self:OnLuaMessage(msgHdr.recog, msgHdr.param1, msgHdr.param2, msgHdr.param3, msgData)
  66. end
  67. function GUINetworkUtil:RegisterLuaNetworkHandler( msgID, netCB )
  68. self.luahandlers[msgID] = netCB
  69. end
  70. function GUINetworkUtil:UnRegisterLuaNetworkHandler(msgID)
  71. self.luahandlers[msgID] = nil
  72. end
  73. function GUINetworkUtil:OnLuaMessage( msgID, n1, n2, n3, msgData )
  74. SL:Print("[GUI LOG] OnLuaMessage", msgID, n1, n2, n3, msgData)
  75. local handler = self.luahandlers[msgID]
  76. if not handler then
  77. SL:Print( "[GUI LOG] GUINetworkUtil:OnLuaMessage, Invaild handler, " .. msgID )
  78. return nil
  79. end
  80. handler( msgID, n1, n2, n3, msgData )
  81. end
  82. function GUINetworkUtil:SendLuaMsg( msgID, n1, n2, n3, sendData )
  83. SL:Print("[GUI LOG] SendLuaMsg", msgID, n1, n2, n3, sendData)
  84. if not msgID then
  85. SL:Print( "[GUI LOG] GUINetworkUtil:SendLuaMsg, Invaild args, ", msgID )
  86. return nil
  87. end
  88. n1 = n1 or 0
  89. n2 = n2 or 0
  90. n3 = n3 or 0
  91. sendData = sendData or ""
  92. LuaSendMsg( global.MsgType.MSG_CS_SSR_LUA_NETWORK_REQUEST, msgID, n1, n2, n3, sendData, string.len( sendData ) )
  93. if SL._DEBUG then
  94. if string.len(sendData) > 4096 then
  95. SL:Print("[GUI ERROR], GUINetwork send string too long!!!", string.len(sendData), sendData)
  96. PrintTraceback()
  97. end
  98. end
  99. end
  100. return GUINetworkUtil