summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua')
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua149
1 files changed, 0 insertions, 149 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
deleted file mode 100644
index d1c0b164924..00000000000
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
+++ /dev/null
@@ -1,149 +0,0 @@
------------------------------------------------------------------------------
--- LuaSocket helper module
--- Author: Diego Nehab
------------------------------------------------------------------------------
-
------------------------------------------------------------------------------
--- Declare module and import dependencies
------------------------------------------------------------------------------
-local base = _G
-local string = require("string")
-local math = require("math")
-local socket = require("socket.core")
-
-local _M = socket
-
------------------------------------------------------------------------------
--- Exported auxiliar functions
------------------------------------------------------------------------------
-function _M.connect4(address, port, laddress, lport)
- return socket.connect(address, port, laddress, lport, "inet")
-end
-
-function _M.connect6(address, port, laddress, lport)
- return socket.connect(address, port, laddress, lport, "inet6")
-end
-
-function _M.bind(host, port, backlog)
- if host == "*" then host = "0.0.0.0" end
- local addrinfo, err = socket.dns.getaddrinfo(host);
- if not addrinfo then return nil, err end
- local sock, res
- err = "no info on address"
- for i, alt in base.ipairs(addrinfo) do
- if alt.family == "inet" then
- sock, err = socket.tcp4()
- else
- sock, err = socket.tcp6()
- end
- if not sock then return nil, err end
- sock:setoption("reuseaddr", true)
- res, err = sock:bind(alt.addr, port)
- if not res then
- sock:close()
- else
- res, err = sock:listen(backlog)
- if not res then
- sock:close()
- else
- return sock
- end
- end
- end
- return nil, err
-end
-
-_M.try = _M.newtry()
-
-function _M.choose(table)
- return function(name, opt1, opt2)
- if base.type(name) ~= "string" then
- name, opt1, opt2 = "default", name, opt1
- end
- local f = table[name or "nil"]
- if not f then base.error("unknown key (".. base.tostring(name) ..")", 3)
- else return f(opt1, opt2) end
- end
-end
-
------------------------------------------------------------------------------
--- Socket sources and sinks, conforming to LTN12
------------------------------------------------------------------------------
--- create namespaces inside LuaSocket namespace
-local sourcet, sinkt = {}, {}
-_M.sourcet = sourcet
-_M.sinkt = sinkt
-
-_M.BLOCKSIZE = 2048
-
-sinkt["close-when-done"] = function(sock)
- return base.setmetatable({
- getfd = function() return sock:getfd() end,
- dirty = function() return sock:dirty() end
- }, {
- __call = function(self, chunk, err)
- if not chunk then
- sock:close()
- return 1
- else return sock:send(chunk) end
- end
- })
-end
-
-sinkt["keep-open"] = function(sock)
- return base.setmetatable({
- getfd = function() return sock:getfd() end,
- dirty = function() return sock:dirty() end
- }, {
- __call = function(self, chunk, err)
- if chunk then return sock:send(chunk)
- else return 1 end
- end
- })
-end
-
-sinkt["default"] = sinkt["keep-open"]
-
-_M.sink = _M.choose(sinkt)
-
-sourcet["by-length"] = function(sock, length)
- return base.setmetatable({
- getfd = function() return sock:getfd() end,
- dirty = function() return sock:dirty() end
- }, {
- __call = function()
- if length <= 0 then return nil end
- local size = math.min(socket.BLOCKSIZE, length)
- local chunk, err = sock:receive(size)
- if err then return nil, err end
- length = length - string.len(chunk)
- return chunk
- end
- })
-end
-
-sourcet["until-closed"] = function(sock)
- local done
- return base.setmetatable({
- getfd = function() return sock:getfd() end,
- dirty = function() return sock:dirty() end
- }, {
- __call = function()
- if done then return nil end
- local chunk, err, partial = sock:receive(socket.BLOCKSIZE)
- if not err then return chunk
- elseif err == "closed" then
- sock:close()
- done = 1
- return partial
- else return nil, err end
- end
- })
-end
-
-
-sourcet["default"] = sourcet["until-closed"]
-
-_M.source = _M.choose(sourcet)
-
-return _M