diff options
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua')
-rw-r--r-- | Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua deleted file mode 100644 index 5babb7e1ea1..00000000000 --- a/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua +++ /dev/null @@ -1,89 +0,0 @@ ------------------------------------------------------------------------------ --- Select sample: simple text line server --- LuaSocket sample files. --- Author: Diego Nehab ------------------------------------------------------------------------------ -local socket = require("socket") -host = host or "*" -port1 = port1 or 8080 -port2 = port2 or 8181 -if arg then - host = arg[1] or host - port1 = arg[2] or port1 - port2 = arg[3] or port2 -end - -server1 = assert(socket.bind(host, port1)) -server2 = assert(socket.bind(host, port2)) -server1:settimeout(1) -- make sure we don't block in accept -server2:settimeout(1) - -io.write("Servers bound\n") - --- simple set implementation --- the select function doesn't care about what is passed to it as long as --- it behaves like a table --- creates a new set data structure -function newset() - local reverse = {} - local set = {} - return setmetatable(set, {__index = { - insert = function(set, value) - if not reverse[value] then - table.insert(set, value) - reverse[value] = #set - end - end, - remove = function(set, value) - local index = reverse[value] - if index then - reverse[value] = nil - local top = table.remove(set) - if top ~= value then - reverse[top] = index - set[index] = top - end - end - end - }}) -end - -set = newset() - -io.write("Inserting servers in set\n") -set:insert(server1) -set:insert(server2) - -while 1 do - local readable, _, error = socket.select(set, nil) - for _, input in ipairs(readable) do - -- is it a server socket? - if input == server1 or input == server2 then - io.write("Waiting for clients\n") - local new = input:accept() - if new then - new:settimeout(1) - io.write("Inserting client in set\n") - set:insert(new) - end - -- it is a client socket - else - local line, error = input:receive() - if error then - input:close() - io.write("Removing client from set\n") - set:remove(input) - else - io.write("Broadcasting line '", line, "'\n") - writable, error = socket.skip(1, socket.select(nil, set, 1)) - if not error then - for __, output in ipairs(writable) do - if output ~= input then - output:send(line .. "\n") - end - end - else io.write("No client ready to receive!!!\n") end - end - end - end -end |