From 2c89ba5b4beaaea1bd0b4bde1717a73c5a437661 Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Thu, 3 Dec 2009 16:53:58 +0100 Subject: net.server_select: Add a function to just lock a stream for reading --- net/server_select.lua | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'net/server_select.lua') diff --git a/net/server_select.lua b/net/server_select.lua index 19a2320b..72a43e9c 100644 --- a/net/server_select.lua +++ b/net/server_select.lua @@ -436,28 +436,35 @@ wrapconnection = function( server, listeners, socket, ip, serverport, clientport maxreadlen = readlen or maxreadlen return bufferlen, maxreadlen, maxsendlen end - handler.lock = function( self, switch ) + handler.lock_read = function (self, switch) if switch == true then - handler.write = idfalse - local tmp = _sendlistlen - _sendlistlen = removesocket( _sendlist, socket, _sendlistlen ) - _writetimes[ handler ] = nil - if _sendlistlen ~= tmp then - nosend = true - end - tmp = _readlistlen + local 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 + end + return noread + end + handler.lock = function( self, switch ) + handler.lock_read (switch) + if switch == true then + handler.write = idfalse + local tmp = _sendlistlen + _sendlistlen = removesocket( _sendlist, socket, _sendlistlen ) + _writetimes[ handler ] = nil + if _sendlistlen ~= tmp then + nosend = true + end + elseif switch == false then + handler.write = write if nosend then nosend = false write( "" ) -- cgit v1.2.3