> you would do:
> 
>         $sock = AIO::Open( Host => 'www.perl.org',
>                            Port => 80 ) ;

> Similarly for LWP you would just do:
> 
>         $sock = AIO::Open( Url => 'http://www.perl.org' ) ;

>         $event = AIO::Open( Host => 'www.perl.org',
>                             Port => 80
>                             Callback => $obj  ) ;
> 
>         $event = AIO::Open( Url => 'http://www.perl.org/index.html',
>                             Callback => $obj  ) ;

I like this overall. Very nice.

One of the goals in RFC 14, and the reason why I chose to go the
"handler" route, is to make it look like open() had just been beefed up:

   $file = open "/etc/motd";
   $dir  = open dir "/usr/local";
   $http = open "http://www.yahoo.com";

However, the under-the-hood implementation of dir->open and http->open
is not explored; I was trying to create a consistent user-level
interface that does not require the complex syntax shown above. And from
this angle, I think RFC 14 has a lot to offer.

But, one thing that I think is worth exploring is how we could merge
this ideas, since I think the AIO system could well be a very viable
implementation. One thing I could see is ditching the handler idea and
instead just having people use URL's:

   $file = open "/etc/motd";
   $dir  = open "dir:/usr/local";
   $dir  = opendir "/usr/local";   # legacy shortcut
   $http = open "http://www.yahoo.com";

The CORE::open would be smart enough to then dispatch to the underlying
AIO->open (or whatever) and do something akin what you've listed above.

I like the AIO idea; if we could stick it under the hood (but still
accessible, like IO::, if you really want to use it directly), I could
see it implementing Perl 6 IO.

One last thing: I could see a class hierarchy as being potentially most
effective for something like this; perhaps you could have AIO::HTTP,
AIO::File, AIO::Dir, and so on, with the main AIO class serving as the
base/dispatch class.

-Nate

Reply via email to