=head1 NAME
IOMux::Bundle - logical group of connections
=head1 INHERITANCE
IOMux::Bundle
is a IOMux::Handler::Read
is a IOMux::Handler
IOMux::Bundle
is a IOMux::Handler::Write
is a IOMux::Handler
IOMux::Bundle is extended by
IOMux::IPC
=head1 SYNOPSIS
my
$syscall
= IOMux::Bundle::Parallel->new(...);
$mux
->add(
$syscall
);
=head1 DESCRIPTION
A bundle is a set of file handles, so a convenience wrapper
around
a set of different connections
with
a single purpose.
=head1 METHODS
=head2 Constructors
=over 4
=item IOMux::Bundle-E<gt>B<new>(OPTIONS)
The C<stdin>, C<stdout> and C<stderr> objects are from the perspective
of the other side.
-Option --Defined in --Default
fh IOMux::Handler <required>
name IOMux::Handler <stringified handle>
read_size IOMux::Handler::Read 32768
stderr <
undef
>
stdin <required>
stdout <required>
write_size IOMux::Handler::Write 4096
=over 2
=item
fh
=> FILEHANDLE
=item
name
=> STRING
=item
read_size
=> INTEGER
=item
stderr
=> L<IOMux::Handler::Read|IOMux::Handler::Read> object
=item
stdin
=> L<IOMux::Handler::Write|IOMux::Handler::Write> object
=item
stdout
=> L<IOMux::Handler::Read|IOMux::Handler::Read> object
=item
write_size
=> INTEGER
=back
=item IOMux::Bundle-E<gt>B<
open
>(MODE, WHAT, OPTIONS)
See L<IOMux::Handler/
"Constructors"
>
=item IOMux::Bundle-E<gt>B<
open
>(MODE, WHAT, OPTIONS)
See L<IOMux::Handler/
"Constructors"
>
=back
=head2 Accessors
=over 4
=item
$obj
-E<gt>B<connections>
=item
$obj
-E<gt>B<fh>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<fh>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<
fileno
>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<
fileno
>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<mux>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<mux>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<name>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<name>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<readSize>([INTEGER])
See L<IOMux::Handler::Read/
"Accessors"
>
=item
$obj
-E<gt>B<stderr>
=item
$obj
-E<gt>B<stdin>
=item
$obj
-E<gt>B<stdout>
=item
$obj
-E<gt>B<usesSSL>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<usesSSL>
See L<IOMux::Handler/
"Accessors"
>
=item
$obj
-E<gt>B<writeSize>([INTEGER])
See L<IOMux::Handler::Write/
"Accessors"
>
=back
=head2 User interface
=head3 Connection
=over 4
=item
$obj
-E<gt>B<
close
>([CALLBACK])
See L<IOMux::Handler/
"Connection"
>
=item
$obj
-E<gt>B<
close
>([CALLBACK])
See L<IOMux::Handler/
"Connection"
>
=item
$obj
-E<gt>B<timeout>([TIMEOUT])
See L<IOMux::Handler/
"Connection"
>
=item
$obj
-E<gt>B<timeout>([TIMEOUT])
See L<IOMux::Handler/
"Connection"
>
=back
=head3 Reading
=over 4
=item
$obj
-E<gt>B<
readline
>(CALLBACK)
See L<IOMux::Handler::Read/
"Reading"
>
=item
$obj
-E<gt>B<slurp>(CALLBACK)
See L<IOMux::Handler::Read/
"Reading"
>
=back
=head3 Writing
=over 4
=item
$obj
-E<gt>B<
print
>(STRING|SCALAR|LIST|ARRAY)
See L<IOMux::Handler::Write/
"Writing"
>
=item
$obj
-E<gt>B<
printf
>(FORMAT, PARAMS)
See L<IOMux::Handler::Write/
"Writing"
>
=item
$obj
-E<gt>B<
say
>(STRING|SCALAR|LIST|ARRAY)
See L<IOMux::Handler::Write/
"Writing"
>
=item
$obj
-E<gt>B<
write
>(SCALAR, [MORE])
See L<IOMux::Handler::Write/
"Writing"
>
=back
=head2 Multiplexer
=head3 Connection
=over 4
=item
$obj
-E<gt>B<mux_init>(MUX, [HANDLER])
See L<IOMux::Handler/
"Connection"
>
=item
$obj
-E<gt>B<mux_init>(MUX, [HANDLER])
See L<IOMux::Handler/
"Connection"
>
=item
$obj
-E<gt>B<mux_remove>
See L<IOMux::Handler/
"Connection"
>
=item
$obj
-E<gt>B<mux_remove>
See L<IOMux::Handler/
"Connection"
>
=item
$obj
-E<gt>B<mux_timeout>
See L<IOMux::Handler/
"Connection"
>
=item
$obj
-E<gt>B<mux_timeout>
See L<IOMux::Handler/
"Connection"
>
=back
=head3 Reading
=over 4
=item
$obj
-E<gt>B<mux_eof>(INPUT)
See L<IOMux::Handler::Read/
"Reading"
>
=item
$obj
-E<gt>B<mux_except_flagged>(FILENO)
See L<IOMux::Handler/
"Reading"
>
=item
$obj
-E<gt>B<mux_except_flagged>(FILENO)
See L<IOMux::Handler/
"Reading"
>
=item
$obj
-E<gt>B<mux_input>(BUFFER)
See L<IOMux::Handler::Read/
"Reading"
>
=item
$obj
-E<gt>B<mux_read_flagged>(FILENO)
See L<IOMux::Handler/
"Reading"
>
=item
$obj
-E<gt>B<mux_read_flagged>(FILENO)
See L<IOMux::Handler/
"Reading"
>
=back
=head3 Writing
=over 4
=item
$obj
-E<gt>B<mux_outbuffer_empty>
See L<IOMux::Handler::Write/
"Writing"
>
=item
$obj
-E<gt>B<mux_output_waiting>
See L<IOMux::Handler::Write/
"Writing"
>
=item
$obj
-E<gt>B<mux_write_flagged>(FILENO)
See L<IOMux::Handler/
"Writing"
>
=item
$obj
-E<gt>B<mux_write_flagged>(FILENO)
See L<IOMux::Handler/
"Writing"
>
=back
=head3 Service
=head3 Errors
=over 4
=item
$obj
-E<gt>B<mux_error>(BUFFER)
Called
when
new input
has
arrived on the error channel. It is passed a
B<reference> to the error BUFFER. It must remove any input that it you
have consumed from the BUFFER, and leave any partially received data
in there
for
more text to arrive.
example:
sub
mux_error
{
my
(
$self
,
$errbuf
) =
@_
;
print
STDERR
$$errbuf
;
$$errbuf
=
''
;
}
=back
=head2 Helpers
=over 4
=item
$obj
-E<gt>B<extractSocket>(HASH)
=item IOMux::Bundle-E<gt>B<extractSocket>(HASH)
See L<IOMux::Handler/
"Helpers"
>
=item
$obj
-E<gt>B<extractSocket>(HASH)
=item IOMux::Bundle-E<gt>B<extractSocket>(HASH)
See L<IOMux::Handler/
"Helpers"
>
=item
$obj
-E<gt>B<fdset>(STATE, READ, WRITE, ERROR)
See L<IOMux::Handler/
"Helpers"
>
=item
$obj
-E<gt>B<fdset>(STATE, READ, WRITE, ERROR)
See L<IOMux::Handler/
"Helpers"
>
=item
$obj
-E<gt>B<show>
See L<IOMux::Handler/
"Helpers"
>
=item
$obj
-E<gt>B<show>
See L<IOMux::Handler/
"Helpers"
>
=back
=head1 SEE ALSO
This module is part of IOMux distribution version 0.12,
All modules in this suite:
L</Any::Daemon>,
L</IOMux>, and
L</IOMux::HTTP>.
Please post questions or ideas to F<perl
@overmeer
.net>
=head1 LICENSE
Copyrights 2011 by Mark Overmeer. For other contributors see ChangeLog.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.