31 lines
941 B
Lua
31 lines
941 B
Lua
--- Module returns a single function to detect the io-loop in use.
|
|
-- Either 'copas', 'nginx', or 'ioloop', or nil+error
|
|
local log = require "mqtt.log"
|
|
|
|
local loop
|
|
return function()
|
|
if loop then return loop end
|
|
if type(ngx) == "table" then
|
|
-- there is a global 'ngx' table, so we're running OpenResty
|
|
log:info("LuaMQTT auto-detected Nginx as the runtime environment")
|
|
loop = "nginx"
|
|
return loop
|
|
|
|
elseif package.loaded.copas then
|
|
-- 'copas' was already loaded
|
|
log:info("LuaMQTT auto-detected Copas as the io-loop in use")
|
|
loop = "copas"
|
|
return loop
|
|
|
|
elseif pcall(require, "socket") and tostring(require("socket")._VERSION):find("LuaSocket") then
|
|
-- LuaSocket is available
|
|
log:info("LuaMQTT auto-detected LuaSocket as the socket library to use with mqtt-ioloop")
|
|
loop = "ioloop"
|
|
return loop
|
|
|
|
else
|
|
-- unknown
|
|
return nil, "LuaMQTT io-loop/connector auto-detection failed, please specify one explicitly"
|
|
end
|
|
end
|