JsonProtoHelper.lua 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. local JsonProtoHelper = class("JsonProtoHelper")
  2. local Message = require( "network/jsonproto/message")
  3. local slen = string.len
  4. function JsonProtoHelper:ctor()
  5. self.handlers = {}
  6. end
  7. function JsonProtoHelper:init()
  8. local networkCtl = LuaNetworkController:Inst()
  9. local msgType = global.MsgType
  10. LuaRegisterMsgHandler( msgType.MSG_SC_JSON_PROTO_HELPER_RESPONSE, handler( self, self.handle_JSON_MESSAGE ) )
  11. end
  12. function JsonProtoHelper:handle_JSON_MESSAGE( msg )
  13. local len = msg:GetDataLength()
  14. if len <= 0 then
  15. print( "handle_JSON_MESSAGE, len <= 0!" )
  16. return nil
  17. end
  18. local ServerTimeProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerTimeProxy)
  19. if ServerTimeProxy:IsKfState() then
  20. return nil
  21. end
  22. local header = msg:GetHeader()
  23. local model = header.recog
  24. local data = msg:GetData()
  25. local jsonStr = data:ReadString( len )
  26. local json_msg = Message.new()
  27. -- print("json proto event", model, jsonStr)
  28. if not json_msg:load( jsonStr, header ) then
  29. print( "json message error", "len:" .. tostring( len ) .. jsonStr )
  30. return nil
  31. end
  32. self:OnMessage(model, json_msg )
  33. end
  34. function JsonProtoHelper:RegisterJsonHandler( model, handler )
  35. self.handlers[model] = handler
  36. end
  37. function JsonProtoHelper:OnMessage(model, json_msg )
  38. local action = json_msg:getAction()
  39. local tmpStr = "model:" .. tostring( model )
  40. --跨服状态屏蔽
  41. local ServerTimeProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerTimeProxy)
  42. if ServerTimeProxy:IsKfState() then
  43. return nil
  44. end
  45. if not action then
  46. print( "JsonProtoHelper:OnMessage, Invaild arg, " .. tmpStr )
  47. return nil
  48. end
  49. local handler = self.handlers[model]
  50. if not handler or not handler[action] then
  51. print( "JsonProtoHelper:OnMessage, Invaild handler, " .. tmpStr )
  52. return nil
  53. end
  54. local callback = handler[action]
  55. callback( handler, json_msg:getData() )
  56. end
  57. function JsonProtoHelper:SendMsg(model, script, action, data, ex1, ex2, ex3 )
  58. --跨服状态屏蔽
  59. local ServerTimeProxy = global.Facade:retrieveProxy(global.ProxyTable.ServerTimeProxy)
  60. if ServerTimeProxy:IsKfState() then
  61. return nil
  62. end
  63. if not model or not script then
  64. print( "JsonProtoHelper:SendMsg, Invaild arg, ", model, script )
  65. return nil
  66. end
  67. local msg = Message.new(action, data, ex1, ex2, ex3)
  68. local jsonStr = msg:dump()
  69. LuaSendMsg( global.MsgType.MSG_CS_JSON_PROTO_HELPER_REQUEST, model, script, 0, 0, jsonStr, slen( jsonStr ) )
  70. end
  71. return JsonProtoHelper