POE::Pipe::OneWay.3pm

Langue: en

Version: 2009-02-17 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

POE::Pipe::OneWay - a portable API for one-way pipes

SYNOPSIS

   my ($read, $write) = POE::Pipe::OneWay->new();
   die "couldn't create a pipe: $!" unless defined $read;
 
 

DESCRIPTION

The right way to create an anonymous pipe varies from one operating system to the next. Some operating systems support "pipe()". Others require "socketpair()". And a few operating systems support neither, so a plain old socket must be created.

POE::Pipe::OneWay will attempt to create a unidirectional pipe using "pipe()", "socketpair()", and IO::Socket::INET, in that order. Exceptions are hardcoded for operating systems with broken or nonstandard behaviors.

The upshot of all this is that an application can portably create a one-way pipe by instantiating POE::Pipe::OneWay. The work of deciding how to create the pipe and opening the handles will be taken care of internally.

POE::Pipe::OneWay may be used outside of POE, as it doesn't use POE internally.

PUBLIC METHODS

new [TYPE]

Create a new one-way pipe, optionally constraining it to a particular TYPE of pipe. One-way pipes have two ends: a ``read'' end and a ``write'' end. On success, new() returns two handles: one for the ``read'' end and one for the ``write'' end. Returns nothing on failure, and sets $! to explain why the constructor failed.
   my ($read, $write) = POE::Pipe::OneWay->new();
   die $! unless defined $read;
 
 

TYPE may be one of ``pipe'', ``socketpair'', or ``inet''. When set, POE::Pipe::OneWay will constrain its search to either "pipe()", a UNIX-domain "socketpair()", or plain old sockets, respectively. Otherwise new() will try each method in order, or a particular method predetermined to be the best one for the current operating environment.

BUGS

POE::Pipe::OneWay may block up to one second on some systems if failure occurs while trying to create ``inet'' sockets.

SEE ALSO

POE::Pipe, POE::Pipe::TwoWay. POE::Pipe::OneWay is copyright 2000-2008 by Rocco Caputo. All rights reserved. POE::Pipe::OneWay is free software; you may redistribute it and/or modify it under the same terms as Perl itself.