=head1 NAME

IO::Mux::File::Write - write to file

=head1 INHERITANCE

 IO::Mux::File::Write
   is a IO::Mux::Handler::Write
   is a IO::Mux::Handler

=head1 SYNOPSIS

  my $mux = IO::Mux::Select->new;  # or ::Poll

  use IO::Mux::Open '>';
  my $file = $mux->open('>', $filename);

  use IO::Mux::File::Write;
  my $file = IO::Mux::File::Write->new
    (file => $filename, mode => '>>');
  $mux->add($file);

  $file->write($text);
  $file->print($text);

  write $file $text;
  print $file $text;

=head1 DESCRIPTION

Open a file to be written.

=head1 METHODS

=head2 Constructors

=over 4

=item IO::Mux::File::Write-E<gt>B<new>(OPTIONS)

 -Option    --Defined in     --Default
  append                       <false>
  create                       <true>
  exclusive                    <false>
  fh          IO::Mux::Handler  <required>
  file                         <required>
  mode                         '>'
  modeflags                    <undef>
  name        IO::Mux::Handler  '$mode$file'
  write_size  IO::Mux::Handler::Write  4096

=over 2

=item append => BOOLEAN

=item create => BOOLEAN

=item exclusive => BOOLEAN

=item fh => FILEHANDLE

=item file => FILENAME|HANDLE

The file to be managed, either provided as FILENAME or as HANDLE. When
a HANDLE is passed, most other options will be ignored. The HANDLE must
be in non-blocking mode already and opened for writing (only).

=item mode => '>'|'>>'

The C<&gt;&gt;> is short for normal open plus the append option set.

=item modeflags => INTEGER

When defined, the C<mode>, C<exclusive>, C<create> and C<append> options
are not used, but your value is taken. Use constants defined by Fcntl.
Do not forget to include C<O_NONBLOCK>.

=item name => STRING

=item write_size => INTEGER

=back

=item IO::Mux::File::Write-E<gt>B<open>(MODE, FILE, OPTIONS)

=back

=head2 Accessors

=over 4

=item $obj-E<gt>B<fh>
See L<IO::Mux::Handler/"Accessors">

=item $obj-E<gt>B<fileno>
See L<IO::Mux::Handler/"Accessors">

=item $obj-E<gt>B<mode>

The bits of the open mode.

=item $obj-E<gt>B<mux>
See L<IO::Mux::Handler/"Accessors">

=item $obj-E<gt>B<name>
See L<IO::Mux::Handler/"Accessors">

=item $obj-E<gt>B<usesSSL>
See L<IO::Mux::Handler/"Accessors">

=item $obj-E<gt>B<writeSize>([INTEGER])
See L<IO::Mux::Handler::Write/"Accessors">

=back

=head2 User interface

=head3 Connection

=over 4

=item $obj-E<gt>B<close>([CALLBACK])
See L<IO::Mux::Handler/"Connection">

=item $obj-E<gt>B<timeout>([TIMEOUT])
See L<IO::Mux::Handler/"Connection">

=back

=head3 Writing

=over 4

=item $obj-E<gt>B<print>(STRING|SCALAR|LIST|ARRAY)
See L<IO::Mux::Handler::Write/"Writing">

=item $obj-E<gt>B<printf>(FORMAT, PARAMS)
See L<IO::Mux::Handler::Write/"Writing">

=item $obj-E<gt>B<say>(STRING|SCALAR|LIST|ARRAY)
See L<IO::Mux::Handler::Write/"Writing">

=item $obj-E<gt>B<write>(SCALAR, [MORE])
See L<IO::Mux::Handler::Write/"Writing">

=back

=head2 Multiplexer

=head3 Connection

=over 4

=item $obj-E<gt>B<mux_init>(MUX, [HANDLER])
See L<IO::Mux::Handler/"Connection">

=item $obj-E<gt>B<mux_remove>
See L<IO::Mux::Handler/"Connection">

=item $obj-E<gt>B<mux_timeout>
See L<IO::Mux::Handler/"Connection">

=back

=head3 Reading

=over 4

=item $obj-E<gt>B<mux_except_flagged>(FILENO)
See L<IO::Mux::Handler/"Reading">

=item $obj-E<gt>B<mux_read_flagged>(FILENO)
See L<IO::Mux::Handler/"Reading">

=back

=head3 Writing

=over 4

=item $obj-E<gt>B<mux_outbuffer_empty>
See L<IO::Mux::Handler::Write/"Writing">

=item $obj-E<gt>B<mux_output_waiting>
See L<IO::Mux::Handler::Write/"Writing">

=item $obj-E<gt>B<mux_write_flagged>(FILENO)
See L<IO::Mux::Handler/"Writing">

=back

=head3 Service

=head2 Helpers

=over 4

=item $obj-E<gt>B<extractSocket>(HASH)

=item IO::Mux::File::Write-E<gt>B<extractSocket>(HASH)
See L<IO::Mux::Handler/"Helpers">

=item $obj-E<gt>B<fdset>(STATE, READ, WRITE, ERROR)
See L<IO::Mux::Handler/"Helpers">

=item $obj-E<gt>B<show>
See L<IO::Mux::Handler/"Helpers">

=back

=head1 SEE ALSO

This module is part of IO-Mux distribution version 0.11,
built on January 26, 2011. Website: F<http://perl.overmeer.net/>
All modules in this suite:
L</Any::Daemon>,
L</IO::Mux>, and
L</IO::Mux::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.
See F<http://www.perl.com/perl/misc/Artistic.html>

