Skip to content

Commit d430eaf

Browse files
committed
Fix. Compatibility with lzmq-ffi
1 parent 6a673ff commit d430eaf

File tree

7 files changed

+47
-30
lines changed

7 files changed

+47
-30
lines changed

lua/log/writer/async/_private/server.lua

+3-2
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,13 @@ end
4949

5050
local Z
5151
local function run_zserver(server, maker, logformat, ctx, ...)
52+
Z = Z or require "log.writer.net.zmq._private.compat"
53+
5254
assert(type(server) == 'string')
5355
assert(type(maker) == 'string')
5456
assert(type(logformat) == 'string')
55-
assert(type(ctx) == 'userdata')
57+
assert(Z.is_ctx(ctx))
5658

57-
Z = Z or require "log.writer.net.zmq._private.compat"
5859
local zthreads = assert(Z.threads)
5960
local ok, err = zthreads.runstring(ctx, Worker, server, maker, logformat, ...)
6061
local child_thread = assert(zthreads.runstring(ctx, Worker, server, maker, logformat, ...))

lua/log/writer/async/server/zmq.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ local function rand_str(n)
1616
end
1717

1818
local function create_server(ctx, addr, maker, logformat)
19-
if ctx and type(ctx) ~= 'userdata' then
19+
if ctx and not Z.is_ctx(ctx) then
2020
ctx, addr, maker, logformat = nil, ctx, addr, maker
2121
end
2222
logformat = logformat or "log.logformat.default"

lua/log/writer/async/zmq.lua

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
local Z = require "log.writer.net.zmq._private.compat"
12
local server = require "log.writer.async.server.zmq"
23

34
local function create_writer(ctx, addr, maker)
4-
if ctx and type(ctx) ~= 'userdata' then
5+
if ctx and not Z.is_ctx(ctx) then
56
ctx, addr, maker = nil, ctx, addr
67
end
78

lua/log/writer/net/zmq/_private/compat.lua

+29
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,34 @@ local zstrerror, zassert, ETERM
88
local zconnect, zbind
99
local zrecv_all, zrecv
1010

11+
12+
local function has_member(t, key)
13+
local ok, has
14+
if type(key) == "table" then
15+
ok, has = pcall(function()
16+
for _, k in ipairs(key) do
17+
if nil == t[k] then return false end
18+
end
19+
return true
20+
end)
21+
else
22+
ok, has = pcall(function()
23+
return nil ~= t[key]
24+
end)
25+
end
26+
return ok and has
27+
end
28+
29+
local function is_ctx(ctx)
30+
local tname = type(ctx)
31+
if (tname ~= 'table') and (tname ~= 'userdata') then
32+
return false
33+
end
34+
return has_member(ctx, {
35+
'socket', 'term'
36+
})
37+
end
38+
1139
zmq = prequire "lzmq"
1240
if zmq then
1341
zpoller = prequire "lzmq.poller"
@@ -79,4 +107,5 @@ return {
79107
strerror = zstrerror;
80108
assert = zassert;
81109
ETERM = ETERM;
110+
is_ctx = is_ctx;
82111
}

lua/log/writer/net/zmq/_private/impl.lua

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ local function init(stype, is_srv)
4444
local M = {}
4545

4646
function M.new(ctx, addr, timeout)
47-
if ctx and type(ctx) ~= 'userdata' then
47+
if ctx and not Z.is_ctx(ctx) then
4848
ctx, addr, timeout = nil, ctx, addr
4949
end
5050

utils/monitor.lua

+6-13
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,7 @@ local udp_bind_host = host
1414
local udp_bind_port = port
1515

1616
local uskt = assert(socket.udp())
17-
if uskt.getfd then assert(uskt:setsockname(udp_bind_host, udp_bind_port))
18-
else
19-
print("UDP do not support!")
20-
uskt:close()
21-
uskt = nil
22-
end
17+
assert(uskt:setsockname(udp_bind_host, udp_bind_port))
2318

2419
local ctx = zmq.init(1)
2520
local zskt = ctx:socket(zmq.SUB)
@@ -34,12 +29,10 @@ loop:add(zskt, zmq.POLLIN, function()
3429
else write('zmq://unknown', tostring(msg[1])) end
3530
end)
3631

37-
if uskt then
38-
loop:add(uskt:getfd(), zmq.POLLIN, function()
39-
local msg, ip, port = uskt:receivefrom()
40-
local name = 'udp://' .. ip .. ":" .. port
41-
write(name, msg)
42-
end)
43-
end
32+
loop:add(uskt:getfd(), zmq.POLLIN, function()
33+
local msg, ip, port = uskt:receivefrom()
34+
local name = 'udp://' .. ip .. ":" .. port
35+
write(name, msg)
36+
end)
4437

4538
loop:start()

utils/proxy_monitor.lua

+5-12
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,7 @@ local udp_bind_host = host
2020
local udp_bind_port = port
2121

2222
local uskt = assert(socket.udp())
23-
if uskt.getfd then assert(uskt:setsockname(udp_bind_host, udp_bind_port))
24-
else
25-
print("UDP do not support!")
26-
uskt:close()
27-
uskt = nil
28-
end
23+
assert(uskt:setsockname(udp_bind_host, udp_bind_port))
2924

3025
local ctx = zmq.init(1)
3126
local zskt = ctx:socket(zmq.PULL)
@@ -38,11 +33,9 @@ loop:add(zskt, zmq.POLLIN, function()
3833
write(msg[1])
3934
end)
4035

41-
if uskt then
42-
loop:add(uskt:getfd(), zmq.POLLIN, function()
43-
local msg, ip, port = uskt:receivefrom()
44-
write(msg)
45-
end)
46-
end
36+
loop:add(uskt:getfd(), zmq.POLLIN, function()
37+
local msg, ip, port = uskt:receivefrom()
38+
write(msg)
39+
end)
4740

4841
loop:start()

0 commit comments

Comments
 (0)