Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- opt/lib/nets
- -- by Timendainum
- -- Network serialization wrapper functions for LyqydNet
- -- For LyqydNet by Lyqyd
- -- http://www.computercraft.info/forums2/index.php?/topic/1708-lyqydnet-rednet-api/
- ---------------------------------------------------
- ---------------------------------------------------
- -- local functions
- local function processMessageType(raw)
- --txt.sPrint("processMessageType called: ", eaw)
- local result = "nil"
- if raw ~= nil then
- if type(raw) == "string" then
- result = raw
- else
- result = "invalid"
- end
- end
- --txt.sPrint("processMessageType done: ", result)
- return result
- end
- local function processMessage(raw)
- --txt.sPrint("processMessage called: ", raw)
- local tMessage = {}
- -- preprocess message --
- if raw == nil then
- tMessage = nil
- elseif string.len(raw) > 2 and string.sub(raw, 1, 1) == "{" and string.sub(raw, -1) == "}" then
- local tResult = textutils.unserialize(raw)
- if tResult[1] then
- tMessage = tResult
- else
- tMessage = nil
- end
- else
- tMessage = { raw }
- end
- if tMessage == nil then
- tMessage = { nil }
- end
- -- handle response
- --txt.sPrint("processMessage done: ", unpack(tMessage))
- return tMessage
- end
- ---------------------------------------------------
- -- functions
- -- send
- function send(conn, messageType, ...)
- --txt.sPrint("send called: conn: ", conn, " messageType: ",messageType, ...)
- if conn then
- local tSData = {...}
- local result = textutils.serialize(tSData)
- --txt.sPrint("nets.send(): Sending serialized data: ", result)
- return connection.send(conn, messageType, result)
- else
- print("nets.send() failed, no connection to send.")
- return false
- end
- end
- -- awaitResponse
- function awaitResponse(conn, timeout)
- --print("awaitResponse called: conn: ", conn, " timeout:" ,timeout)
- if conn then
- local rawMessType, messType, rawMessage, tMessage = nil, "nil", nil, nil
- rawMessType, rawMessage = connection.awaitResponse(conn, timeout)
- -- preprocess messType
- messType = processMessageType(rawMessType)
- tMessage = processMessage(rawMessage)
- -- handle response
- return messType, tMessage
- else
- print("nets.awaitResponse() failed, no connection to await.")
- return false
- end
- end
- -- listenIdle()
- function listenIdle(port)
- --print("listenIdle called...")
- local conn, rawMessType, messType, rawMessage, tMessage = nil, nil, "nil", nil, {}
- conn, rawMessType, rawMessage = connection.listenIdle(port)
- -- preprocess messType
- messType = processMessageType(rawMessType)
- -- preprocess message --
- tMessage = processMessage(rawMessage)
- -- handle response
- return conn, messType, tMessage
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement