Schneemann

OC Router

Jun 23rd, 2020
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.35 KB | None | 0 0
  1. --Set
  2. local component = require("component")
  3. local term = require("term")
  4. local thread = require("thread")
  5. local event = require("event")
  6. local serial = require("serialization")
  7. local modem = component.modem
  8.  
  9. local queue = {}
  10.  
  11. term.clear()
  12.  
  13. print("---Router online---")
  14.  
  15. modem.open(7727)
  16.  
  17. -- Address Book -- Router Address: 25630b44-6b43-46e5-abcb-7a84b0aea85c
  18. addresses =
  19. {
  20.  {dest="probench", address="0d8faae2-522c-48bf-bcaa-3494e3e30206", by="modem", desc="Main Programing Bench"},
  21.  {dest="tbench1", address="1d02846b-fdb6-4b84-9b3f-18d461857433", by="modem", desc="Test Bench #1"},
  22.  {dest="osinstbench", address="1f2dccf1-2715-43ad-9ec6-faa486a074c1", by="modem", desc="OS Installer Bench"},
  23.  {dest="reactor1info", address="b9cdbf26-5087-4e62-9883-a75be1abe06b", by="modem", desc="Reactor 1 Info Handler"}
  24. }
  25. --Variables--
  26. local dest = ""
  27. local msg = ""
  28.  
  29. -- Functions --
  30. function parse(rMsg)
  31.  out = {}
  32.  sep = "%s"
  33.  for str in string.gmatch(rMsg, "([^"..sep.."]+)") do
  34.   table.insert(out, str)
  35.  end
  36.  for addr, row in ipairs(addresses) do
  37.   if out[2] == row.dest then
  38.    dest = row.address
  39.   end
  40.  end
  41.  msg = out[3]
  42. end
  43.  
  44. function send(dest,msg)
  45.  modem.send(dest,7727,msg)
  46. end
  47.  
  48. function CleanNils(t)
  49.   local ans = {}
  50.   for _,v in pairs(t) do
  51.     ans[ #ans+1 ] = v
  52.   end
  53.   return ans
  54. end
  55. ---- Main ----
  56. --local eventHandler = thread.create(function()
  57. while true do
  58.  print("[Waiting for request]")
  59.  local _,_,from,_,_,rawMsg = event.pull("modem_message") -- Waits for an event
  60.  print("[Received] from " .. from .. " of " .. rawMsg)
  61.  table.insert(queue,#queue+1,rawMsg)
  62. end
  63. --end)
  64.  
  65. local requestProccessor1 = thread.create(function()
  66.  while true do
  67.   if #queue > 0 then
  68.    print("queue processing")
  69.    os.sleep()
  70.    local rawMsg = queue[1]
  71.    parse(rawMsg) --Sends raw message data to parser
  72.    send(dest,msg)
  73.    print("[Sent] to " .. dest .. " of " .. msg)
  74.    os.sleep()
  75.    table.remove(queue,1)
  76.    CleanNils(queue)
  77.   end
  78.   os.sleep()
  79.  end
  80. end)
  81.  
  82. --------------
Add Comment
Please, Sign In to add comment