IO::Mux::Pipe::Write - write to an external command


IO-Mux documentation  | view source Contained in the IO-Mux distribution.

Index


NAME

Top

IO::Mux::Pipe::Write - write to an external command

INHERITANCE

Top

 IO::Mux::Pipe::Write
   is a IO::Mux::Handler::Write
   is a IO::Mux::Handler

SYNOPSIS

Top

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

  use IO::Mux::Open '|-';
  my $pipe = $mux->open('|-', $command, @cmd_options);

  use IO::Mux::Pipe::Write;
  my $pipe = IO::Mux::Pipe::Write->new
    (command => [$command, @cmd_options]);
  $mux->add($pipe);

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

  write $pipe $text;
  print $pipe $text;

DESCRIPTION

Top

In an event driven program, you must be careful with every Operation System call, because it can block the event mechanism, hence the program as a whole. Often you can be lazy with writes, because its communication buffers are usually working quite asynchronous... but not always. You may skip the callbacks for small writes and prints.

METHODS

Top

Constructors

IO::Mux::Pipe::Write->bare(OPTIONS)

Creates a pipe, but does not start a process (yet). Used by IO::Mux::IPC, which needs three pipes for one process. Returned is not only a new pipe object, but also a read handle to be connected to the other side.

All OPTIONS which are available to IO::Mux::Handler::Write::new() can be used here as well.

 -Option   --Default
  read_size  4096

read_size => INTEGER

example:

  my ($in, $in_rh)
      = IO::Mux::Pipe::Write->bare(name => 'stdin');

IO::Mux::Pipe::Write->new(OPTIONS)
 -Option    --Defined in     --Default
  command                      <required>
  fh          IO::Mux::Handler  <required>
  name        IO::Mux::Handler  '|$cmd'
  write_size  IO::Mux::Handler::Write  4096

command => COMMAND|ARRAY

The external command to be executed. Either the COMMAND needs to parameters, or you need to pass an ARRAY of the command name and all its parameters.

fh => FILEHANDLE
name => STRING
write_size => INTEGER

IO::Mux::Pipe::Write->open(MODE, (CMD, CMDOPTS)|(CMDARRAY, OPTIONS))

Open the pipe to write. MODE is always -|. When you need to pass additional OPTIONS to the implied new(), then you must use an ARRAY for command name and its optional parameters.

example:

  my $mux = IO::Mux::Poll->new;
  $mux->open('|-', 'lpr', '-#4');  # no opts
  $mux->open('|-', ['lpr', '-#4'], %opts);
  $mux->open('|-', 'lpr');        # no opts
  $mux->open('|-', ['lpr'], %opts);

Accessors

$obj->childPid

The process id of the child on the other side of the pipe.

$obj->fh See "Accessors" in IO::Mux::Handler
$obj->fileno See "Accessors" in IO::Mux::Handler
$obj->mode

The bits of the open mode.

$obj->mux See "Accessors" in IO::Mux::Handler
$obj->name See "Accessors" in IO::Mux::Handler
$obj->usesSSL See "Accessors" in IO::Mux::Handler
$obj->writeSize([INTEGER]) See "Accessors" in IO::Mux::Handler::Write

User interface

Connection

$obj->close([CALLBACK]) See "Connection" in IO::Mux::Handler
$obj->timeout([TIMEOUT]) See "Connection" in IO::Mux::Handler

Writing

$obj->print(STRING|SCALAR|LIST|ARRAY) See "Writing" in IO::Mux::Handler::Write
$obj->printf(FORMAT, PARAMS) See "Writing" in IO::Mux::Handler::Write
$obj->say(STRING|SCALAR|LIST|ARRAY) See "Writing" in IO::Mux::Handler::Write
$obj->write(SCALAR, [MORE]) See "Writing" in IO::Mux::Handler::Write

Multiplexer

Connection

$obj->mux_init(MUX, [HANDLER]) See "Connection" in IO::Mux::Handler
$obj->mux_remove See "Connection" in IO::Mux::Handler
$obj->mux_timeout See "Connection" in IO::Mux::Handler

Reading

$obj->mux_except_flagged(FILENO) See "Reading" in IO::Mux::Handler
$obj->mux_read_flagged(FILENO) See "Reading" in IO::Mux::Handler

Writing

$obj->mux_outbuffer_empty See "Writing" in IO::Mux::Handler::Write
$obj->mux_output_waiting See "Writing" in IO::Mux::Handler::Write
$obj->mux_write_flagged(FILENO) See "Writing" in IO::Mux::Handler

Service

Helpers

$obj->extractSocket(HASH)
IO::Mux::Pipe::Write->extractSocket(HASH) See "Helpers" in IO::Mux::Handler
$obj->fdset(STATE, READ, WRITE, ERROR) See "Helpers" in IO::Mux::Handler
$obj->show See "Helpers" in IO::Mux::Handler

SEE ALSO

Top

This module is part of IO-Mux distribution version 0.11, built on January 26, 2011. Website: http://perl.overmeer.net/ All modules in this suite: Any::Daemon, IO::Mux, and IO::Mux::HTTP.

Please post questions or ideas to perl@overmeer.net

LICENSE

Top

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 http://www.perl.com/perl/misc/Artistic.html


IO-Mux documentation  | view source Contained in the IO-Mux distribution.