Advertisement
Guest User

database.lua

a guest
Mar 28th, 2015
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.38 KB | None | 0 0
  1. local component = require("component")
  2. local tcpnet = require("tcpnet")
  3. local event = require("event")
  4. local s = require("serialization")
  5. portkeepalive = 255
  6. portopen = 1026
  7. portrequest = 1027
  8. handle = tcpnet.new("198.27.109.102")
  9. handle:open(portopen)
  10. handle:open(portrequest)
  11. handle:open(portkeepalive)
  12. stationradar = {}
  13. ottawaradar = {}
  14. shipradar = {}
  15.  
  16.  
  17. function keepalive()
  18.         event.ignore("tcpnet_message", sendinformation)
  19.         handle:send(portkeepalive, "ping")
  20.         print("haven't been pinged in a while, pinging")
  21.         local _, _, port, data = event.pull(10, "tcpnet_message")
  22.             if data == nil then
  23.                 print("got nothing, reconnecting")
  24.                 handle:close(portopen)
  25.                 handle:close(portrequest)
  26.                 handle:close(portkeepalive)
  27.                 handle = tcpnet.new("198.27.109.102")
  28.                 handle:open(portopen)
  29.                 handle:open(portrequest)
  30.                 handle:open(portkeepalive)
  31.                 a = event.timer(30, keepalive)
  32.                 event.listen("tcpnet_message", incoming)
  33.                 return
  34.             elseif port == portkeepalive and data == "pong" then
  35.                 print("got keep alive")
  36.                 a = event.timer(30, keepalive)
  37.                 event.listen("tcpnet_message", incoming)
  38.                 return
  39.             end    
  40. end        
  41.  
  42.  
  43.  
  44. function incoming(_, _, port, data)
  45.         if port == portopen then
  46.             if string.find(data, "stationradar") then
  47.                 print("saving stationradar as radar")
  48.                 data = string.gsub(data, "stationradar", "radar")
  49.                 stationradar = s.unserialize(data)
  50.                 event.cancel(a)
  51.                 a = event.timer(30, keepalive)
  52.             elseif string.find(data, "ottawaradar") then
  53.                 print("saving ottawaradar as radar")
  54.                data = string.gsub(data, "ottawaradar", "radar")
  55.                 ottawaradar = s.unserialize(data)
  56.                 event.cancel(a)
  57.                 a = event.timer(30, keepalive)
  58.             elseif string.find(data, "shipradar") then
  59.                 print("saving shipradar as radar")
  60.                data = string.gsub(data, "shipradar", "radar")
  61.                 shipradar = s.unserialize(data)
  62.                 event.cancel(a)
  63.                 a = event.timer(30, keepalive)
  64.             end
  65.         elseif port == portrequest then
  66.             if string.find(data, "request") then
  67.                 if string.find(data, "station") then
  68.                 print("got request for station variable")
  69.                 handle:send(portrequest, s.serialize(stationradar))
  70.                 event.cancel(a)
  71.                 a = event.timer(30, keepalive)
  72.                 elseif string.find(data, "ottawa") then
  73.                 print("got request for ottawa variable")
  74.                 handle:send(portrequest, s.serialize(ottawaradar))
  75.                 event.cancel(a)
  76.                 a = event.timer(30, keepalive)
  77.                 elseif string.find(data, "ship") then
  78.                 print("got request for ship variable")
  79.                 handle:send(portrequest, s.serialize(shipradar))
  80.                 event.cancel(a)
  81.                 a = event.timer(30, keepalive)
  82.                 end
  83.             end
  84.         end
  85. end
  86. print("register TCPnet listen")
  87. event.listen("tcpnet_message", incoming)
  88. print("register keepalive timer")
  89. a = event.timer(30, keepalive)
  90. while true do
  91. event.pull()
  92. os.sleep(0)
  93. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement