[macruby-changes] [4243] ControlTower/trunk/lib/control_tower/rack_socket.rb

source_changes at macosforge.org source_changes at macosforge.org
Fri Jun 18 14:58:38 PDT 2010


Revision: 4243
          http://trac.macosforge.org/projects/ruby/changeset/4243
Author:   joshua.ballanco at apple.com
Date:     2010-06-18 14:58:37 -0700 (Fri, 18 Jun 2010)
Log Message:
-----------
Use NSFileHandles for great speed.

Modified Paths:
--------------
    ControlTower/trunk/lib/control_tower/rack_socket.rb

Modified: ControlTower/trunk/lib/control_tower/rack_socket.rb
===================================================================
--- ControlTower/trunk/lib/control_tower/rack_socket.rb	2010-06-18 21:58:36 UTC (rev 4242)
+++ ControlTower/trunk/lib/control_tower/rack_socket.rb	2010-06-18 21:58:37 UTC (rev 4243)
@@ -71,17 +71,19 @@
       data = ""
       headers_done = false
       content_length = 0
+      connection_handle = NSFileHandle.alloc.initWithFileDescriptor(connection.fileno)
 
       while (!headers_done || env['rack.input'].bytesize < content_length) do
         select([connection], nil, nil, 1)
         if headers_done
           begin
-            env['rack.input'] << connection.readpartial(READ_SIZE)
+            env['rack.input'].appendString(NSString.alloc.initWithData(connection_handle.availableData,
+                                                                       encoding: NSUTF8StringEncoding))
           rescue EOFError
             break
           end
         else
-          data << connection.readpartial(READ_SIZE)
+          data.appendString(NSString.alloc.initWithData(connection_handle.availableData, encoding: NSUTF8StringEncoding))
           nread = parser.parseData(data, forEnvironment: env, startingAt: nread)
           if parser.finished
             headers_done = true
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100618/71d72066/attachment.html>


More information about the macruby-changes mailing list