Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local component = require("component")
- local event = require("event")
- local serialization = require("serialization")
- local m = component.modem
- local allPortsOpen = true
- local clients = {}
- function init()
- m.open(5)
- if m.isOpen(5) then
- allPortsOpen = true
- end
- m.open(10)
- if m.isOpen(10) then
- allPortsOpen = true
- end
- if allPortsOpen == false then
- print("Can't bind all ports")
- end
- end
- function handleRequest(from, port, message)
- message = serialization.unserialize(message)
- print(port, tostring(message.method, message.message))
- if port == 5 then
- if message.to == "router" then
- if message.method == "connection" then
- m.send(from, 5, serialization.serialize({connected = true, serverAddress=localAddress}))
- alreadyConnected = false
- for index, clientId in ipairs(clients) do
- if clientId == from then
- alreadyConnected = true
- end
- end
- if alreadyConnected == false then
- table.insert(clients, from)
- end
- print("Client connected: " .. from)
- end
- end
- if message.method == "broadcast" then
- m.open(message.port)
- for index, clientId in ipairs(clients) do
- print(clientId)
- m.send(clientId, message.port, serialization.serialize({port = message.port, from = from, time = message.time, message = message.message}))
- end
- m.close(message.port)
- print("Broadcasted by: " .. from)
- end
- if message.message == "stop" then
- print("stopping! from: " .. from)
- os.exit()
- end
- end
- if port == 10 then
- m.open(message.port)
- m.send(message.to, message.port, serialization.serialize({port = message.port, from = from, to = message.to, time = message.time, message = message.message}))
- m.close(message.port)
- print("Routed message from: " .. from .. " to: " .. message.to)
- end
- end
- function listening()
- local _, localAddress, from, port, distance, message = event.pull("modem_message")
- handleRequest(from, port, message)
- m.open(10)
- m.open(5)
- listening()
- end
- init()
- print("Start listening")
- listening()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement