[MacRuby-devel] How to get handle from Dispatch::Source::DATA type source?

Jordan K. Hubbard jkh at apple.com
Wed Jan 20 00:37:37 PST 2010


Hi guys,

So, now that GCD sources are supported (go Ernie!), I just thought I'd play with a simple echo server example in MacRuby:

require 'socket'

q = Dispatch::Queue.concurrent
m = Dispatch::Queue.main

hostname = "localhost"
port = 25000
s = TCPServer.open(hostname, port)
src = Dispatch::Source.new(Dispatch::Source::READ, s, 0, q) { |src|
	client = s.accept	# XXX Would like to actually get this from src, rather than grabbing the server socket object directly
	client.puts(Time.now.ctime)
	client.puts "Closing down, Bunkie!"
	client.close
}
m.run

The line with the XXX is the issue I'm trying to figure out.  If I look at src.handle or src.data, I end up getting an integer which looks like a fd, not the original TCPSocket instance I passed in, which means I can't call the accept method on it.  Is there some secret to getting at the original handle?

Thanks!

- Jordan




More information about the MacRuby-devel mailing list