summaryrefslogtreecommitdiff
path: root/jnet/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'jnet/init.lua')
-rw-r--r--jnet/init.lua51
1 files changed, 51 insertions, 0 deletions
diff --git a/jnet/init.lua b/jnet/init.lua
new file mode 100644
index 0000000..76a023f
--- /dev/null
+++ b/jnet/init.lua
@@ -0,0 +1,51 @@
+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 \ No newline at end of file