]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
modules/graphite: Use module 'cqueues.socket' instead 'socket'
authorLukáš Ježek <lukas.jezek@nic.cz>
Fri, 13 Dec 2019 11:24:36 +0000 (12:24 +0100)
committerPetr Špaček <petr.spacek@nic.cz>
Fri, 20 Dec 2019 09:23:40 +0000 (10:23 +0100)
modules/graphite/README.rst
modules/graphite/graphite.lua

index 06efd82eee618d502066b98ae63602af83b72053..0c40a8bbd8fd4ff7e9027afa436b22007f291b2e 100644 (file)
@@ -39,9 +39,8 @@ The module supports sending data to multiple servers at once.
 Dependencies
 ^^^^^^^^^^^^
 
-* `luasocket <http://w3.impa.br/~diego/software/luasocket/>`_ available in LuaRocks
+* `lua cqueues <https://25thandclement.com/~william/projects/cqueues.html>`_ package.
 
-    ``$ luarocks install luasocket``
 
 .. _Graphite: https://graphite.readthedocs.io/en/latest/feeding-carbon.html
 .. _InfluxDB: https://influxdb.com/
index bbf735a20eaee6f0017eb16d3182d229705e75e7..80bf92b6e4705ad28b2a4c1f0b7f47f51d41ebe5 100644 (file)
@@ -4,42 +4,29 @@ if not stats then modules.load('stats') end
 -- This is leader-only module
 if worker.id > 0 then return {} end
 local M = {}
-local socket = require('socket')
+local socket = require("cqueues.socket")
 
--- Create connected UDP socket
-local function make_udp(host, port)
+local function make_socket(host, port, stype)
        local s, err, status
-       if host:find(':') then
-               s, err = socket.udp6()
-       else
-               s, err = socket.udp()
-       end
-       if not s then
-               return nil, err
-       end
-       status, err = s:setpeername(host, port)
+
+       s = socket.connect({ host = host, port = port, type = stype })
+       s:setmode('bn', 'bn')
+       status, err = pcall(s.connect, s)
+
        if not status then
-               return nil, err
+               return status, err
        end
        return s
 end
 
+-- Create connected UDP socket
+local function make_udp(host, port)
+       return make_socket(host, port, socket.SOCK_DGRAM)
+end
+
 -- Create connected TCP socket
 local function make_tcp(host, port)
-       local s, err, status
-       if host:find(':') then
-               s, err = socket.tcp6()
-       else
-               s, err = socket.tcp()
-       end
-       if not s then
-               return nil, err
-       end
-       status, err = s:connect(host, port)
-       if not status then
-               return s, err
-       end
-       return s
+       return make_socket(host, port, socket.SOCK_STREAM)
 end
 
 local function merge(results)
@@ -60,7 +47,7 @@ local function publish_table(metrics, prefix, now)
                        msg = prefix..'.'..msg
                end
                for i in ipairs(M.cli) do
-                       local ok, err = M.cli[i]:send(msg)
+                       local ok, err = M.cli[i]:write(msg)
                        if not ok then
                                -- Best-effort reconnect once per two tries
                                local tcp = M.cli[i]['connect'] ~= nil