[Spread-users] select on mailbox perl

Theo Schlossnagle jesus at omniti.com
Mon Aug 15 07:29:27 EDT 2005

On Aug 15, 2005, at 6:13 AM, Ilya Zaytsev wrote:

> I have a perfectly working perl script under winxp and now I'm trying
> to rewrite it to call select (and IO::Select) on mail box handle but
> no success. select call returns -1 and IO::Select->can_read doesn't
> read events. I have seen the XS source code but nothing comes to my
> head. The same technique woks fine for C code.
> Does anybody experienced the same problem?

Without a code segment, it's hard to say.  The connect command in  
Spread returns a list of two things:
  ( $mbox, $private_group )

The $mbox is an IV in perlguts terms, which means it is a scalar  
value representation of the file descriptor.  This is becuase Spread  
returns a mailbox that _happens_ to be a filedescriptor.  The API  
allows Spread to be more creative and return some sort of psuedo  
handle, so watch out for future incompatibility.

Something like:

use IO::Select;
use IO::Handle;
my $mbox, $ioh;
... do you Spread connect stuff and jam the mailbox in $mbox;

my $ioh = IO::Handle->fdopen($mbox, "rw");

You should be able to IO::Select on $ioh as a normal "IO" handle  
now.  It works in UNIX :-)  Windows file descriptors aren't  
contiguous and it emulates select() under the hood in a fairly  
expensive way.  I _assume_ that Perl uses the emulation for  
IO::Select or there would be ample documentation stating that it  
didn't work.  You are changing the $mbox into an actual IO object,  

Cheers ;-)

// Theo Schlossnagle
// Principal Engineer -- http://www.omniti.com/~jesus/
// OmniTI Computer Consulting, Inc. -- http://www.omniti.com/
// Ecelerity: fastest MTA on Earth

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.spread.org/pipermail/spread-users/attachments/20050815/6e4eb629/attachment.html 

More information about the Spread-users mailing list