# HG changeset patch # User Sjoerd Simons # Date 1259855638 -3600 # Node ID fc7e0962520a5f2ea4c514fe23d7f9d1c6dca4a7 # Parent 21f0d80f244a14cad5e9751b43f3511fc2525675 net.server_select: Add a function to just lock a stream for reading diff -r 21f0d80f244a -r fc7e0962520a net/server_select.lua --- a/net/server_select.lua Thu Dec 03 14:15:30 2009 +0000 +++ b/net/server_select.lua Thu Dec 03 16:53:58 2009 +0100 @@ -436,7 +436,25 @@ maxreadlen = readlen or maxreadlen return bufferlen, maxreadlen, maxsendlen end + handler.lock_read = function (self, switch) + if switch == true then + local tmp = _readlistlen + _readlistlen = removesocket( _readlist, socket, _readlistlen ) + _readtimes[ handler ] = nil + if _readlistlen ~= tmp then + noread = true + end + elseif switch == false then + if noread then + noread = false + _readlistlen = addsocket(_readlist, socket, _readlistlen) + _readtimes[ handler ] = _currenttime + end + end + return noread + end handler.lock = function( self, switch ) + handler.lock_read (switch) if switch == true then handler.write = idfalse local tmp = _sendlistlen @@ -445,19 +463,8 @@ if _sendlistlen ~= tmp then nosend = true end - tmp = _readlistlen - _readlistlen = removesocket( _readlist, socket, _readlistlen ) - _readtimes[ handler ] = nil - if _readlistlen ~= tmp then - noread = true - end elseif switch == false then handler.write = write - if noread then - noread = false - _readlistlen = addsocket(_readlist, socket, _readlistlen) - _readtimes[ handler ] = _currenttime - end if nosend then nosend = false write( "" )