Software / code / prosody
Comparison
net/server_event.lua @ 6850:41de00647ad3
server_event: Move local references to various functions to top of file
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 25 Sep 2015 17:02:17 +0200 |
| parent | 6849:0455b9686e16 |
| child | 6851:1f1bed8ebc41 |
comparison
equal
deleted
inserted
replaced
| 6849:0455b9686e16 | 6850:41de00647ad3 |
|---|---|
| 30 CONNECT_TIMEOUT = 20, -- timeout in seconds for connection attempts | 30 CONNECT_TIMEOUT = 20, -- timeout in seconds for connection attempts |
| 31 CLEAR_DELAY = 5, -- seconds to wait for clearing interface list (and calling ondisconnect listeners) | 31 CLEAR_DELAY = 5, -- seconds to wait for clearing interface list (and calling ondisconnect listeners) |
| 32 DEBUG = true, -- show debug messages | 32 DEBUG = true, -- show debug messages |
| 33 } | 33 } |
| 34 | 34 |
| 35 local function use(x) return rawget(_G, x); end | 35 local pairs = pairs |
| 36 local pairs = use "pairs" | 36 local select = select |
| 37 local string = use "string" | 37 local require = require |
| 38 local select = use "select" | 38 local tostring = tostring |
| 39 local require = use "require" | 39 local setmetatable = setmetatable |
| 40 local tostring = use "tostring" | |
| 41 local coroutine = use "coroutine" | |
| 42 local setmetatable = use "setmetatable" | |
| 43 | 40 |
| 44 local t_insert = table.insert | 41 local t_insert = table.insert |
| 45 local t_concat = table.concat | 42 local t_concat = table.concat |
| 43 local s_sub = string.sub | |
| 44 | |
| 45 local coroutine_wrap = coroutine.wrap | |
| 46 local coroutine_yield = coroutine.yield | |
| 46 | 47 |
| 47 local has_luasec, ssl = pcall ( require , "ssl" ) | 48 local has_luasec, ssl = pcall ( require , "ssl" ) |
| 48 local socket = use "socket" or require "socket" | 49 local socket = require "socket" |
| 50 local event = require "luaevent.core" | |
| 51 | |
| 52 local socket_gettime = socket.gettime | |
| 49 local getaddrinfo = socket.dns.getaddrinfo | 53 local getaddrinfo = socket.dns.getaddrinfo |
| 50 | 54 |
| 51 local log = require ("util.logger").init("socket") | 55 local log = require ("util.logger").init("socket") |
| 52 | 56 |
| 53 local function debug(...) | 57 local function debug(...) |
| 71 end | 75 end |
| 72 return z | 76 return z |
| 73 end | 77 end |
| 74 end )( ) | 78 end )( ) |
| 75 | 79 |
| 76 local event = require "luaevent.core" | |
| 77 local base = event.new( ) | 80 local base = event.new( ) |
| 81 local addevent = base.addevent | |
| 78 local EV_READ = event.EV_READ | 82 local EV_READ = event.EV_READ |
| 79 local EV_WRITE = event.EV_WRITE | 83 local EV_WRITE = event.EV_WRITE |
| 80 local EV_TIMEOUT = event.EV_TIMEOUT | 84 local EV_TIMEOUT = event.EV_TIMEOUT |
| 81 local EV_SIGNAL = event.EV_SIGNAL | 85 local EV_SIGNAL = event.EV_SIGNAL |
| 82 | 86 |
| 87 -- Client interface methods | 91 -- Client interface methods |
| 88 local interface_mt | 92 local interface_mt |
| 89 do | 93 do |
| 90 interface_mt = {}; interface_mt.__index = interface_mt; | 94 interface_mt = {}; interface_mt.__index = interface_mt; |
| 91 | 95 |
| 92 local addevent = base.addevent | |
| 93 local coroutine_wrap, coroutine_yield = coroutine.wrap,coroutine.yield | |
| 94 | 96 |
| 95 -- Private methods | 97 -- Private methods |
| 96 function interface_mt:_close() | 98 function interface_mt:_close() |
| 97 return self:_destroy(); | 99 return self:_destroy(); |
| 98 end | 100 end |
| 439 | 441 |
| 440 -- End of client interface methods | 442 -- End of client interface methods |
| 441 | 443 |
| 442 local handleclient; | 444 local handleclient; |
| 443 do | 445 do |
| 444 local string_sub = string.sub -- caching table lookups | |
| 445 local addevent = base.addevent | |
| 446 local socket_gettime = socket.gettime | |
| 447 function handleclient( client, ip, port, server, pattern, listener, sslctx ) -- creates an client interface | 446 function handleclient( client, ip, port, server, pattern, listener, sslctx ) -- creates an client interface |
| 448 --vdebug("creating client interfacce...") | 447 --vdebug("creating client interfacce...") |
| 449 local interface = { | 448 local interface = { |
| 450 type = "client"; | 449 type = "client"; |
| 451 conn = client; | 450 conn = client; |
| 525 end | 524 end |
| 526 interface.eventwrite = nil | 525 interface.eventwrite = nil |
| 527 return -1 | 526 return -1 |
| 528 elseif byte and (err == "timeout" or err == "wantwrite") then -- want write again | 527 elseif byte and (err == "timeout" or err == "wantwrite") then -- want write again |
| 529 --vdebug( "writebuffer is not empty:", err ) | 528 --vdebug( "writebuffer is not empty:", err ) |
| 530 interface.writebuffer[1] = string_sub( interface.writebuffer[1], byte + 1, interface.writebufferlen ) -- new buffer | 529 interface.writebuffer[1] = s_sub( interface.writebuffer[1], byte + 1, interface.writebufferlen ) -- new buffer |
| 531 interface.writebufferlen = interface.writebufferlen - byte | 530 interface.writebufferlen = interface.writebufferlen - byte |
| 532 if "wantread" == err then -- happens only with luasec | 531 if "wantread" == err then -- happens only with luasec |
| 533 local callback = function( ) | 532 local callback = function( ) |
| 534 interface:_close() | 533 interface:_close() |
| 535 interface.eventwritetimeout = nil | 534 interface.eventwritetimeout = nil |
| 753 local loop = function( ) -- starts the event loop | 752 local loop = function( ) -- starts the event loop |
| 754 base:loop( ) | 753 base:loop( ) |
| 755 return "quitting"; | 754 return "quitting"; |
| 756 end | 755 end |
| 757 | 756 |
| 758 local newevent = ( function( ) | 757 local function newevent( ... ) |
| 759 local add = base.addevent | 758 return addevent( base, ... ) |
| 760 return function( ... ) | 759 end |
| 761 return add( base, ... ) | |
| 762 end | |
| 763 end )( ) | |
| 764 | 760 |
| 765 local closeallservers = function( arg ) | 761 local closeallservers = function( arg ) |
| 766 for item in pairs( interfacelist ) do | 762 for item in pairs( interfacelist ) do |
| 767 if item.type == "server" then | 763 if item.type == "server" then |
| 768 item:close( arg ) | 764 item:close( arg ) |