POE::Driver::SysRW - buffered, non-blocking I/O using sysread and syswrite
SYNOPSIS in the POE::Driver manpage illustrates how the interface works. This
module is merely one implementation.
This driver implements the POE::Driver manpage using sysread and syswrite.
POE::Driver::SysRW introduces some additional features not covered in
the base interface.
new() creates a new buffered I/O driver that uses sysread() to read
data from a handle and syswrite() to flush data to that handle. The
constructor accepts one optional named parameter, BlockSize, which
indicates the maximum number of OCTETS that will be read at one time.
BlockSize is 64 kilobytes (65536 octets) by default. Higher values
may improve performance in streaming applications, but the trade-off
is a lower event granularity and increased resident memory usage.
Lower BlockSize values reduce memory consumption somewhat with
corresponding throughput penalties.
my $driver = POE::Driver::SysRW->new;
my $driver = POE::Driver::SysRW->new( BlockSize => $block_size );
Drivers are commonly instantiated within POE::Wheel constructor calls:
$_[HEAP]{wheel} = POE::Wheel::ReadWrite->new(
InputHandle => \*STDIN,
OutputHandle => \*STDOUT,
Driver => POE::Driver::SysRW->new(),
Filter => POE::Filter::Line->new(),
);
Applications almost always use POE::Driver::SysRW, so POE::Wheel
objects almost always will create their own if no Driver is specified.
POE::Driver::SysRW documents the abstract interface documented in
POE::Driver. Please see the POE::Driver manpage for more details about the
following methods:
- flush
-
- get
-
- get_out_messages_buffered
-
- put
-
the POE::Driver manpage, the POE::Wheel manpage.
Also see the SEE ALSO section of POE, which contains a brief
roadmap of POE's documentation.
Please see POE for more information about authors and contributors.
|