Software / code / prosody
Comparison
net/server_select.lua @ 5485:5147eed0a42e
net.server_select: Move socket timeout cleanup code out of a timer, into the select loop (which makes util.timer the only timer using server_select._addtimer).
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Tue, 16 Apr 2013 18:15:10 -0400 |
| parent | 5484:17ce73907c48 |
| child | 5486:bcf27dbef6c6 |
comparison
equal
deleted
inserted
replaced
| 5484:17ce73907c48 | 5485:5147eed0a42e |
|---|---|
| 844 handler.disconnect( )( handler, err ) | 844 handler.disconnect( )( handler, err ) |
| 845 handler:force_close() -- forced disconnect | 845 handler:force_close() -- forced disconnect |
| 846 _closelist[ handler ] = nil; | 846 _closelist[ handler ] = nil; |
| 847 end | 847 end |
| 848 _currenttime = luasocket_gettime( ) | 848 _currenttime = luasocket_gettime( ) |
| 849 | |
| 850 local difftime = os_difftime( _currenttime - _starttime ) | |
| 851 if difftime > _checkinterval then | |
| 852 _starttime = _currenttime | |
| 853 for handler, timestamp in pairs( _writetimes ) do | |
| 854 if os_difftime( _currenttime - timestamp ) > _sendtimeout then | |
| 855 --_writetimes[ handler ] = nil | |
| 856 handler.disconnect( )( handler, "send timeout" ) | |
| 857 handler:force_close() -- forced disconnect | |
| 858 end | |
| 859 end | |
| 860 for handler, timestamp in pairs( _readtimes ) do | |
| 861 if os_difftime( _currenttime - timestamp ) > _readtimeout then | |
| 862 --_readtimes[ handler ] = nil | |
| 863 handler.disconnect( )( handler, "read timeout" ) | |
| 864 handler:close( ) -- forced disconnect? | |
| 865 end | |
| 866 end | |
| 867 end | |
| 868 | |
| 849 if _currenttime - _timer >= math_min(next_timer_time, 1) then | 869 if _currenttime - _timer >= math_min(next_timer_time, 1) then |
| 850 next_timer_time = math_huge; | 870 next_timer_time = math_huge; |
| 851 for i = 1, _timerlistlen do | 871 for i = 1, _timerlistlen do |
| 852 local t = _timerlist[ i ]( _currenttime ) -- fire timers | 872 local t = _timerlist[ i ]( _currenttime ) -- fire timers |
| 853 if t then next_timer_time = math_min(next_timer_time, t); end | 873 if t then next_timer_time = math_min(next_timer_time, t); end |
| 919 use "setmetatable" ( _writetimes, { __mode = "k" } ) | 939 use "setmetatable" ( _writetimes, { __mode = "k" } ) |
| 920 | 940 |
| 921 _timer = luasocket_gettime( ) | 941 _timer = luasocket_gettime( ) |
| 922 _starttime = luasocket_gettime( ) | 942 _starttime = luasocket_gettime( ) |
| 923 | 943 |
| 924 addtimer( function( ) | |
| 925 local difftime = os_difftime( _currenttime - _starttime ) | |
| 926 if difftime > _checkinterval then | |
| 927 _starttime = _currenttime | |
| 928 for handler, timestamp in pairs( _writetimes ) do | |
| 929 if os_difftime( _currenttime - timestamp ) > _sendtimeout then | |
| 930 --_writetimes[ handler ] = nil | |
| 931 handler.disconnect( )( handler, "send timeout" ) | |
| 932 handler:force_close() -- forced disconnect | |
| 933 end | |
| 934 end | |
| 935 for handler, timestamp in pairs( _readtimes ) do | |
| 936 if os_difftime( _currenttime - timestamp ) > _readtimeout then | |
| 937 --_readtimes[ handler ] = nil | |
| 938 handler.disconnect( )( handler, "read timeout" ) | |
| 939 handler:close( ) -- forced disconnect? | |
| 940 end | |
| 941 end | |
| 942 end | |
| 943 end | |
| 944 ) | |
| 945 | |
| 946 local function setlogger(new_logger) | 944 local function setlogger(new_logger) |
| 947 local old_logger = log; | 945 local old_logger = log; |
| 948 if new_logger then | 946 if new_logger then |
| 949 log = new_logger; | 947 log = new_logger; |
| 950 end | 948 end |