| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- -- Warning: do not edit this file.
- -- 警告: 不要编辑此文件
-
- local _M = {ARRAY_LIMIT = 65536}
- _M.__index = _M
- local NULL_MESSAGE_CODE = -1
- local CODE_OK = 200
- local CODE_ERROR = 500
- function _M:GetU8()
- return self.stream:GetU8()
- end
- function _M:GetS8()
- return self.stream:GetS8()
- end
- function _M:GetS16()
- return self.stream:GetS16()
- end
- function _M:GetU16()
- return self.stream:GetU16()
- end
- function _M:GetS32()
- return self.stream:GetS32()
- end
- function _M:GetU32()
- return self.stream:GetU32()
- end
- function _M:GetS64()
- return self.stream:GetS64()
- end
- function _M:GetU64()
- return self.stream:GetU64()
- end
- function _M:GetF32()
- return self.stream:GetF32()
- end
- function _M:GetF64()
- return self.stream:GetF64()
- end
- function _M:GetBool()
- return self.stream:GetBool()
- end
- function _M:GetUnicode()
- return self.stream:GetUnicode()
- end
- function _M:GetUTF()
- return self.stream:GetUTF()
- end
- function _M:GetEnum8()
- return self.stream:GetEnum8()
- end
- function _M:GetEnum32()
- return self.stream:GetEnum8()
- end
- function _M:GetDateTime()
- return self.stream:GetDateTime()
- end
- function _M:GetTimeSpan()
- return self.stream:GetTimeSpan()
- end
- function _M:GetBytes()
- return self.stream:GetBytes()
- end
- function _M:GetArray(elefn, objTemplate)
- local len = self.stream:GetVS32()
- if len < 0 or len > self.ARRAY_LIMIT then
- return nil
- end
- local ret = {}
- for i = 1, len do
- local obj = elefn(self, Protocol.Serializer.StringDefined[objTemplate])
- if obj == nil then
- obj = false
- end
- table.insert(ret, obj)
- end
- return ret
- end
- function _M:GetList(elefn, objTemplate)
- local len = self.stream:GetVS32()
- -- print('GetList ',objTemplate, len)
- if len < 0 or len > self.ARRAY_LIMIT then
- return nil
- end
- local ret = {}
- for i = 1, len do
- local obj = elefn(self, Protocol.Serializer.StringDefined[objTemplate])
- if obj == nil then
- obj = false
- end
- table.insert(ret, obj)
- end
- return ret
- end
- function _M:GetMap(keyfn, valfn, keyTypeStr, valTypeStr)
- local len = self.stream:GetVS32()
- -- print('GetMap',valTypeStr, len)
- if len < 0 or len > self.ARRAY_LIMIT then
- return nil
- end
- local ret = {}
- for i = 1, len do
- ret[keyfn(self, Protocol.Serializer.StringDefined[keyTypeStr])] =
- valfn(self, Protocol.Serializer.StringDefined[valTypeStr])
- end
- return ret
- end
- local function GetCodeMessage(name, code)
- local messageCodes = MessageCodeAttribute[name]
- return messageCodes and messageCodes[code] or 'unknown error'
- end
- local function IsMessageNull(ret)
- return not ret.s2c_msg or ret.s2c_msg == ''
- end
- local function CshapFormat(s2c_msg, s2c_args)
- local function search(k)
- return tostring(s2c_args[k + 1])
- end
- return string.gsub(s2c_msg, '{(%d+)}', search)
- end
- local function EndReadRouteOBJ(ret)
- if IsMessageNull(ret) then
- if ret.s2c_code == CODE_OK or ret.s2c_code == CODE_ERROR then
- if ret.InnerResponse then
- EndReadRouteOBJ(ret.InnerResponse)
- ret.InnerResponse.s2c_msg = CshapFormat(ret.InnerResponse.s2c_msg, ret.InnerResponse.s2c_args)
- ret.s2c_msg = ret.InnerResponse.s2c_msg
- end
- end
- if IsMessageNull(ret) then
- ret.s2c_msg = GetCodeMessage(ret.Name, ret.s2c_code)
- end
- if IsMessageNull(ret) and ret.InnerResponse then
- ret.s2c_msg = ret.InnerResponse.s2c_msg
- end
- end
- end
- function _M:GetRouteOBJ(route)
- local objTemplate = Protocol.Serializer[route]
- local ret = setmetatable({}, objTemplate)
- objTemplate.Read(self, ret)
- EndReadRouteOBJ(ret)
- return ret, objTemplate
- end
- function _M:GetOBJ(objTemplate)
- local id = self:GetS32()
- if id ~= NULL_MESSAGE_CODE then
- objTemplate = Protocol.Serializer[id]
- if not objTemplate then
- error('Template Message not find ' .. id)
- end
- local ret = setmetatable({}, objTemplate)
- objTemplate.Read(self, ret)
- return ret
- end
- end
- function _M:Dispose()
- self.stream:Dispose()
- end
- function _M.Create(bytes)
- local ret = setmetatable({}, _M)
- ret.stream = LuaInputStream(bytes)
- return ret
- end
- return _M
|