net.server_select: Add a function to just lock a stream for reading

Thu, 03 Dec 2009 16:53:58 +0100

author
Sjoerd Simons <sjoerd.simons@collabora.co.uk>
date
Thu, 03 Dec 2009 16:53:58 +0100
changeset 2307
fc7e0962520a
parent 2306
21f0d80f244a
child 2308
600ac8992a4c

net.server_select: Add a function to just lock a stream for reading

net/server_select.lua file | annotate | diff | comparison | revisions
--- 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( "" )

mercurial