TCPSocket select method

R

Roger Pack

Hmm. If you create a method thus:
class TCPSocket
def readableNow?
r,w,e = select([self],nil,nil,0)
return r != nil
end
end

It turns out to use a select OTHER than IO.select. Anyone know, by
chance what the 'internal' select method does?
Thanks.
-Roger
 
J

Jon Hawkins

Roger said:
Hmm. If you create a method thus:
class TCPSocket
def readableNow?
r,w,e = select([self],nil,nil,0)
return r != nil
end
end

It turns out to use a select OTHER than IO.select. Anyone know, by
chance what the 'internal' select method does?
Thanks.
-Roger

The kernel select method -

Performs a low level select call, which waits for data to become
available from input/output devices. The first three parameters are
arrays of IO objects or nil. The last is a timeout in seconds, which
should be an Integer or a Float. The call waits for data to become
available for any of the IO objects in read_array, for buffers to have
cleared sufficiently to enable writing to any of the devices in
write_array, or for an error to occur on the devices in error_array. If
one or more of these conditions are met, the call returns a
three-element array containing arrays of the IO objects that were ready.
Otherwise, if there is no change in status for timeout seconds, the call
returns nil. If all parameters are nil, the current thread sleeps
forever.

Dunno if thats what u were lookin for
 
S

Sylvain Joyeux

Hmm. If you create a method thus:
class TCPSocket
def readableNow?
r,w,e = select([self],nil,nil,0)
return r != nil
end
end

It turns out to use a select OTHER than IO.select. Anyone know, by
chance what the 'internal' select method does?
It cannot use IO.select since IO.select is a singleton method of IO and a
TCPSocket object is an instance of IO. The only way to explicitely get
IO.select is to call
r,w,e = IO.select(...)

It calls Kernel#select. And I wouldn't be surprised if Kernel#select and
IO.select were actually the same method ...

Sylvain
 
E

Eric Hodel

Hmm. If you create a method thus:
class TCPSocket
def readableNow?
r,w,e = select([self],nil,nil,0)
return r != nil
end
end

It turns out to use a select OTHER than IO.select. Anyone know, by
chance what the 'internal' select method does?
It cannot use IO.select since IO.select is a singleton method of IO
and a
TCPSocket object is an instance of IO. The only way to explicitely get
IO.select is to call
r,w,e = IO.select(...)

It calls Kernel#select. And I wouldn't be surprised if
Kernel#select and
IO.select were actually the same method ...

They are.
 
R

Roger Pack

Eric said:
They are.

class TCPSocket
def readableNow?
r,w,e = select([self],nil,nil,0)
return r != nil
end
end

So...follow up question:
with the above code, if you try to run it, it says that "select takes 0
arguments, 4 given" (whereas 'normally' select takes four). If I
replace the call to select (above), with IO.select, then it works with 4
parameters. So I am thinking it is a different 'internal' select
function of some type. So...my guess is it is not a call to IO.select
or Kernel.select...hmm...
 
T

thomas.macklin

Eric said:
On Aug 13, 2007, at 23:54, Sylvain Joyeux wrote:
They are.

class TCPSocket
def readableNow?
r,w,e = select([self],nil,nil,0)
return r != nil
end
end

So...follow up question:
with the above code, if you try to run it, it says that "select takes 0
arguments, 4 given" (whereas 'normally' select takes four). If I
replace the call to select (above), with IO.select, then it works with 4
parameters. So I am thinking it is a different 'internal' select
function of some type. So...my guess is it is not a call to IO.select
or Kernel.select...hmm...

Enumerable#select takes no args... perhaps you have an array of IOs
you're calling select on?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,266
Messages
2,571,318
Members
48,002
Latest member
EttaPfeffe

Latest Threads

Top