net/server_select.lua
changeset 5531 483f795f6f99
parent 5492 5d0cc5de5c51
child 5548 c5d1c35c93f4
equal deleted inserted replaced
5530:d83482fc4a81 5531:483f795f6f99
    99 local _sendtraffic
    99 local _sendtraffic
   100 local _readtraffic
   100 local _readtraffic
   101 
   101 
   102 local _selecttimeout
   102 local _selecttimeout
   103 local _sleeptime
   103 local _sleeptime
       
   104 local _tcpbacklog
   104 
   105 
   105 local _starttime
   106 local _starttime
   106 local _currenttime
   107 local _currenttime
   107 
   108 
   108 local _maxsendlen
   109 local _maxsendlen
   137 _sendtraffic = 0 -- some stats
   138 _sendtraffic = 0 -- some stats
   138 _readtraffic = 0
   139 _readtraffic = 0
   139 
   140 
   140 _selecttimeout = 1 -- timeout of socket.select
   141 _selecttimeout = 1 -- timeout of socket.select
   141 _sleeptime = 0 -- time to wait at the end of every loop
   142 _sleeptime = 0 -- time to wait at the end of every loop
       
   143 _tcpbacklog = 128 -- some kind of hint to the OS
   142 
   144 
   143 _maxsendlen = 51000 * 1024 -- max len of send buffer
   145 _maxsendlen = 51000 * 1024 -- max len of send buffer
   144 _maxreadlen = 25000 * 1024 -- max len of read buffer
   146 _maxreadlen = 25000 * 1024 -- max len of read buffer
   145 
   147 
   146 _checkinterval = 1200000 -- interval in secs to check idle clients
   148 _checkinterval = 1200000 -- interval in secs to check idle clients
   209 		end
   211 		end
   210 	end
   212 	end
   211 	handler.resume = function( )
   213 	handler.resume = function( )
   212 		if handler.paused then
   214 		if handler.paused then
   213 			if not socket then
   215 			if not socket then
   214 				socket = socket_bind( ip, serverport );
   216 				socket = socket_bind( ip, serverport, _tcpbacklog );
   215 				socket:settimeout( 0 )
   217 				socket:settimeout( 0 )
   216 			end
   218 			end
   217 			_readlistlen = addsocket(_readlist, socket, _readlistlen)
   219 			_readlistlen = addsocket(_readlist, socket, _readlistlen)
   218 			_socketlist[ socket ] = handler
   220 			_socketlist[ socket ] = handler
   219 			handler.paused = false;
   221 			handler.paused = false;
   718 	if err then
   720 	if err then
   719 		out_error( "server.lua, [", addr, "]:", port, ": ", err )
   721 		out_error( "server.lua, [", addr, "]:", port, ": ", err )
   720 		return nil, err
   722 		return nil, err
   721 	end
   723 	end
   722 	addr = addr or "*"
   724 	addr = addr or "*"
   723 	local server, err = socket_bind( addr, port )
   725 	local server, err = socket_bind( addr, port, _tcpbacklog )
   724 	if err then
   726 	if err then
   725 		out_error( "server.lua, [", addr, "]:", port, ": ", err )
   727 		out_error( "server.lua, [", addr, "]:", port, ": ", err )
   726 		return nil, err
   728 		return nil, err
   727 	end
   729 	end
   728 	local handler, err = wrapserver( listeners, server, addr, port, pattern, sslctx ) -- wrap new server socket
   730 	local handler, err = wrapserver( listeners, server, addr, port, pattern, sslctx ) -- wrap new server socket
   770 
   772 
   771 getsettings = function( )
   773 getsettings = function( )
   772 	return {
   774 	return {
   773 		select_timeout = _selecttimeout;
   775 		select_timeout = _selecttimeout;
   774 		select_sleep_time = _sleeptime;
   776 		select_sleep_time = _sleeptime;
       
   777 		tcp_backlog = _tcpbacklog;
   775 		max_send_buffer_size = _maxsendlen;
   778 		max_send_buffer_size = _maxsendlen;
   776 		max_receive_buffer_size = _maxreadlen;
   779 		max_receive_buffer_size = _maxreadlen;
   777 		select_idle_check_interval = _checkinterval;
   780 		select_idle_check_interval = _checkinterval;
   778 		send_timeout = _sendtimeout;
   781 		send_timeout = _sendtimeout;
   779 		read_timeout = _readtimeout;
   782 		read_timeout = _readtimeout;
   790 	_selecttimeout = tonumber( new.select_timeout ) or _selecttimeout
   793 	_selecttimeout = tonumber( new.select_timeout ) or _selecttimeout
   791 	_sleeptime = tonumber( new.select_sleep_time ) or _sleeptime
   794 	_sleeptime = tonumber( new.select_sleep_time ) or _sleeptime
   792 	_maxsendlen = tonumber( new.max_send_buffer_size ) or _maxsendlen
   795 	_maxsendlen = tonumber( new.max_send_buffer_size ) or _maxsendlen
   793 	_maxreadlen = tonumber( new.max_receive_buffer_size ) or _maxreadlen
   796 	_maxreadlen = tonumber( new.max_receive_buffer_size ) or _maxreadlen
   794 	_checkinterval = tonumber( new.select_idle_check_interval ) or _checkinterval
   797 	_checkinterval = tonumber( new.select_idle_check_interval ) or _checkinterval
       
   798 	_tcpbacklog = tonumber( new.tcp_backlog ) or _tcpbacklog
   795 	_sendtimeout = tonumber( new.send_timeout ) or _sendtimeout
   799 	_sendtimeout = tonumber( new.send_timeout ) or _sendtimeout
   796 	_readtimeout = tonumber( new.read_timeout ) or _readtimeout
   800 	_readtimeout = tonumber( new.read_timeout ) or _readtimeout
   797 	_maxselectlen = new.max_connections or _maxselectlen
   801 	_maxselectlen = new.max_connections or _maxselectlen
   798 	_maxsslhandshake = new.max_ssl_handshake_roundtrips or _maxsslhandshake
   802 	_maxsslhandshake = new.max_ssl_handshake_roundtrips or _maxsslhandshake
   799 	_maxfd = new.highest_allowed_fd or _maxfd
   803 	_maxfd = new.highest_allowed_fd or _maxfd