[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