local jnet = {} jnet.DataType = { INT = 1, FLOAT = 2, BOOL = 3, STRING = 4 } local INT = jnet.DataType.INT local FLOAT = jnet.DataType.FLOAT local BOOL = jnet.DataType.BOOL local STRING = jnet.DataType.STRING local grab = function(buffer, t, sp) if t == INT then return buffer:grabInteger(sp) elseif t == FLOAT then return buffer:grabFloat(sp) elseif t == BOOL then return buffer:grabBoolean(sp) elseif t == STRING then return buffer:grabString(sp) end end -- return jin.net.Buffer jnet.serialize = function(message, buffer) if buffer == nil then return end for k, v in pairs(message) do buffer:append(v) end return buffer end -- input jin.net.Buffer, startpoint -- return messege table jnet.deserialize = function(msg_type, buffer, startpoint) local message = {} local p = startpoint or 0 for k, t in pairs(msg_type) do local v, l = grab(buffer, t, p) p = l + p message[k] = v end return message end return jnet