Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local component = require("component")
- local tcpnet = require("tcpnet")
- local event = require("event")
- local s = require("serialization")
- portkeepalive = 255
- portopen = 1026
- portrequest = 1027
- handle = tcpnet.new("198.27.109.102")
- handle:open(portopen)
- handle:open(portrequest)
- handle:open(portkeepalive)
- stationradar = {}
- ottawaradar = {}
- shipradar = {}
- function keepalive()
- event.ignore("tcpnet_message", sendinformation)
- handle:send(portkeepalive, "ping")
- print("haven't been pinged in a while, pinging")
- local _, _, port, data = event.pull(10, "tcpnet_message")
- if data == nil then
- print("got nothing, reconnecting")
- handle:close(portopen)
- handle:close(portrequest)
- handle:close(portkeepalive)
- handle = tcpnet.new("198.27.109.102")
- handle:open(portopen)
- handle:open(portrequest)
- handle:open(portkeepalive)
- a = event.timer(30, keepalive)
- event.listen("tcpnet_message", incoming)
- return
- elseif port == portkeepalive and data == "pong" then
- print("got keep alive")
- a = event.timer(30, keepalive)
- event.listen("tcpnet_message", incoming)
- return
- end
- end
- function incoming(_, _, port, data)
- if port == portopen then
- if string.find(data, "stationradar") then
- print("saving stationradar as radar")
- data = string.gsub(data, "stationradar", "radar")
- stationradar = s.unserialize(data)
- event.cancel(a)
- a = event.timer(30, keepalive)
- elseif string.find(data, "ottawaradar") then
- print("saving ottawaradar as radar")
- data = string.gsub(data, "ottawaradar", "radar")
- ottawaradar = s.unserialize(data)
- event.cancel(a)
- a = event.timer(30, keepalive)
- elseif string.find(data, "shipradar") then
- print("saving shipradar as radar")
- data = string.gsub(data, "shipradar", "radar")
- shipradar = s.unserialize(data)
- event.cancel(a)
- a = event.timer(30, keepalive)
- end
- elseif port == portrequest then
- if string.find(data, "request") then
- if string.find(data, "station") then
- print("got request for station variable")
- handle:send(portrequest, s.serialize(stationradar))
- event.cancel(a)
- a = event.timer(30, keepalive)
- elseif string.find(data, "ottawa") then
- print("got request for ottawa variable")
- handle:send(portrequest, s.serialize(ottawaradar))
- event.cancel(a)
- a = event.timer(30, keepalive)
- elseif string.find(data, "ship") then
- print("got request for ship variable")
- handle:send(portrequest, s.serialize(shipradar))
- event.cancel(a)
- a = event.timer(30, keepalive)
- end
- end
- end
- end
- print("register TCPnet listen")
- event.listen("tcpnet_message", incoming)
- print("register keepalive timer")
- a = event.timer(30, keepalive)
- while true do
- event.pull()
- os.sleep(0)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement