2007/10/6, kazaam <kazaam / oleco.net>:
> Well I'm trying to "translate" a perl program to ruby and everything worked fine until the near end where I'm now. There we have this perl code:
>
>  my $slct = IO::Select->new($server);
>     while($slct->can_read()) {
>         my $nbytes = read $server, $response, 2**16;
>         last if !$nbytes;
>         $client->send($response);
>     }
>
> $server is a socket-handle exactly as $client. But now I'm stuck. Is there any equivalent to perls can_read ? Than this line here:
>         my $nbytes = read $server, $response, 2**16;
>         last if !$nbytes;
>
> Means something like read from server 2^16 bytes save to nbytes and append to response or?

As long as you are only copying between one pair of descriptors, you
do not need #select.  You can simply do

while ( buffer = io_in.read(2**16) )
  io_out.write(buffer)
end

If you just have few pairs, the code is easier with the above piece
put in a thread per pair.

Only if you are doing heavy copying (say, more than 10 pairs or so)
you should consider using #select.  My 0.02EUR...

Kind regards

robert