local coroutine = use "coroutine"
local setmetatable = use "setmetatable"
-local ssl = use "ssl"
-local socket = use "socket"
+local ssl = use "ssl" or require "ssl"
+local socket = use "socket" or require "socket"
local log = require ("util.logger").init("socket")
return self._port
end
+ function interface_mt:serverport()
+ return self._serverport
+ end
+
function interface_mt:ip()
return self._ip
end
-- Properties
_ip = ip, _port = port, _server = server, _pattern = pattern,
+ _serverport = (server and server:port() or nil),
_sslctx = sslctx; -- parameters
_usingssl = false; -- client is using ssl;
}
readcallback = false; -- read event callback
fatalerror = false; -- error message
nointerface = true; -- lock/unlock parameter
+
+ _ip = addr, _port = port, _pattern = pattern,
+ _sslctx = sslctx;
}
interface.id = tostring(interface):match("%x+$");
interface.readcallback = function( event ) -- server handler, called on incoming connections
local closeallservers = function( arg )
for _, item in ipairs( interfacelist( ) ) do
- if item "type" == "server" then
- item( "close", arg )
+ if item.type == "server" then
+ item:close( arg )
end
end
end
+local function setquitting(yes)
+ if yes then
+ -- Quit now
+ closeallservers();
+ base:loopexit();
+ end
+end
+
+function get_backend()
+ return base:method();
+end
+
return {
cfg = cfg,
addserver = addserver,
addclient = addclient,
wrapclient = wrapclient,
- closeallservers = closeallservers,
+ setquitting = setquitting,
+ closeall = closeallservers,
+ get_backend = get_backend,
__NAME = SCRIPT_NAME,
__DATE = LAST_MODIFIED,