comparison net/server_select.lua @ 10852:2e48aebdb915

net.server_select: Pass conn/handler to readbuffer/sendbuffer The internal implementations don't use it, but this causes onreadable and onwritable of watchfd to receive the conn as they do in other backends.
author Matthew Wild <mwild1@gmail.com>
date Mon, 01 Jun 2020 13:41:41 +0100
parents 6cf16abd0976
children d105e787f5ed
comparison
equal deleted inserted replaced
10851:6cf16abd0976 10852:2e48aebdb915
382 handler.close = function( self, err ) 382 handler.close = function( self, err )
383 if not handler then return true; end 383 if not handler then return true; end
384 _readlistlen = removesocket( _readlist, socket, _readlistlen ) 384 _readlistlen = removesocket( _readlist, socket, _readlistlen )
385 _readtimes[ handler ] = nil 385 _readtimes[ handler ] = nil
386 if bufferqueuelen ~= 0 then 386 if bufferqueuelen ~= 0 then
387 handler.sendbuffer() -- Try now to send any outstanding data 387 handler:sendbuffer() -- Try now to send any outstanding data
388 if bufferqueuelen ~= 0 then -- Still not empty, so we'll try again later 388 if bufferqueuelen ~= 0 then -- Still not empty, so we'll try again later
389 if handler then 389 if handler then
390 handler.write = nil -- ... but no further writing allowed 390 handler.write = nil -- ... but no further writing allowed
391 end 391 end
392 toclose = true 392 toclose = true
750 750
751 local function link(sender, receiver, buffersize) 751 local function link(sender, receiver, buffersize)
752 local sender_locked; 752 local sender_locked;
753 local _sendbuffer = receiver.sendbuffer; 753 local _sendbuffer = receiver.sendbuffer;
754 function receiver.sendbuffer() 754 function receiver.sendbuffer()
755 _sendbuffer(); 755 _sendbuffer(receiver);
756 if sender_locked and receiver.bufferlen() < buffersize then 756 if sender_locked and receiver.bufferlen() < buffersize then
757 sender:lock_read(false); -- Unlock now 757 sender:lock_read(false); -- Unlock now
758 sender_locked = nil; 758 sender_locked = nil;
759 end 759 end
760 end 760 end
960 960
961 local read, write, err = socket_select( _readlist, _sendlist, math_min(_selecttimeout, next_timer_time) ) 961 local read, write, err = socket_select( _readlist, _sendlist, math_min(_selecttimeout, next_timer_time) )
962 for _, socket in ipairs( read ) do -- receive data 962 for _, socket in ipairs( read ) do -- receive data
963 local handler = _socketlist[ socket ] 963 local handler = _socketlist[ socket ]
964 if handler then 964 if handler then
965 handler.readbuffer( ) 965 handler:readbuffer( )
966 else 966 else
967 closesocket( socket ) 967 closesocket( socket )
968 out_put "server.lua: found no handler and closed socket (readlist)" -- this can happen 968 out_put "server.lua: found no handler and closed socket (readlist)" -- this can happen
969 end 969 end
970 end 970 end
971 for _, socket in ipairs( write ) do -- send data waiting in writequeues 971 for _, socket in ipairs( write ) do -- send data waiting in writequeues
972 local handler = _socketlist[ socket ] 972 local handler = _socketlist[ socket ]
973 if handler then 973 if handler then
974 handler.sendbuffer( ) 974 handler:sendbuffer( )
975 else 975 else
976 closesocket( socket ) 976 closesocket( socket )
977 out_put "server.lua: found no handler and closed socket (writelist)" -- this should not happen 977 out_put "server.lua: found no handler and closed socket (writelist)" -- this should not happen
978 end 978 end
979 end 979 end