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.
AUTHOR & COPYRIGHT¶
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.