Advertisement
Guest User

Untitled

a guest
Apr 27th, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. -- Hot Pocket Repeater
  2.  
  3. SECONDS_UNTIL_PACKET_CLEARED = 10
  4.  
  5. -- Open network interface
  6. rednet.open("top")
  7.  
  8. -- Packet table
  9. -- This is to make sure we only repeat a packet once
  10. repeated_packets = {}
  11. memory_size = 0
  12. repeated = 0
  13. dropped = 0
  14.  
  15. function draw_screen()
  16. -- Clear Screen
  17. term.clear()
  18. term.setCursorPos(1, 1)
  19.  
  20. print("HotPocketProtocol Repeater v1.1")
  21. print("-------------------------------")
  22. print("Memory Usage: " .. memory_size)
  23. print("Repeated Packets: " .. repeated)
  24. print("Dropped Packets: " .. dropped)
  25. end
  26.  
  27. function memory_tick()
  28. memory_size = 0
  29. local k = next(repeated_packets)
  30. while k do
  31. memory_size = memory_size + 1
  32. n = next(repeated_packets, k)
  33. if repeated_packets[k] <= 0 then -- Packet is done being timed out
  34. repeated_packets[k] = nil -- Clear packet
  35. else -- Packet is not done being timed out
  36. repeated_packets[k] = repeated_packets[k] - 1 -- Decrement counter
  37. end
  38. if k ~= n then
  39. k = n
  40. else
  41. k = nil
  42. end
  43. end
  44. end
  45.  
  46. while true do
  47. memory_tick()
  48. draw_screen()
  49.  
  50. -- Listen for packets
  51. computer_id, info, protocol = rednet.receive("HotPocketProtocol", 1)
  52.  
  53. if computer_id ~= nil then -- If a packet is received
  54. -- Unpack packet
  55. data = {}
  56. for i in string.gmatch(info, "%S+") do
  57. table.insert(data, i)
  58. end
  59. packet = data[1] .. tonumber(data[2])
  60.  
  61. -- Make sure packet hasn't been repeated
  62. if repeated_packets[packet] == nil then
  63. repeated_packets[packet] = SECONDS_UNTIL_PACKET_CLEARED;
  64. rednet.broadcast(info, "HotPocketProtocol")
  65. repeated = repeated + 1
  66. else
  67. dropped = dropped + 1
  68. end
  69. end
  70. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement