From: Lukáš Ježek Date: Fri, 13 Dec 2019 11:24:36 +0000 (+0100) Subject: modules/graphite: Use module 'cqueues.socket' instead 'socket' X-Git-Tag: v5.0.0~17^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=04157f68ec9bfe331d347047c978b2f4d59682bf;p=thirdparty%2Fknot-resolver.git modules/graphite: Use module 'cqueues.socket' instead 'socket' --- diff --git a/modules/graphite/README.rst b/modules/graphite/README.rst index 06efd82ee..0c40a8bbd 100644 --- a/modules/graphite/README.rst +++ b/modules/graphite/README.rst @@ -39,9 +39,8 @@ The module supports sending data to multiple servers at once. Dependencies ^^^^^^^^^^^^ -* `luasocket `_ available in LuaRocks +* `lua cqueues `_ package. - ``$ luarocks install luasocket`` .. _Graphite: https://graphite.readthedocs.io/en/latest/feeding-carbon.html .. _InfluxDB: https://influxdb.com/ diff --git a/modules/graphite/graphite.lua b/modules/graphite/graphite.lua index bbf735a20..80bf92b6e 100644 --- a/modules/graphite/graphite.lua +++ b/modules/graphite/graphite.lua @@ -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