package Message::Passing::Output::IO::Handle;
use Moo;
#use Moose::Util::TypeConstraints;
use namespace::clean -except => 'meta';
with 'Message::Passing::Role::Output';
has fh => (
# isa => duck_type([qw/ print /]),
is => 'ro',
required => 1,
);
has append => (
is => 'ro',
default => sub { "\n" },
);
sub consume {
my $self = shift;
$self->fh->print(shift() . $self->append);
}
1;
=head1 NAME
Message::Passing::Output::IO::Handle - output to an IO handle
=head1 SYNOPSIS
my $out = Message::Passing::Output::IO::Handle->new(
fh => \*STDOUT,
append => "\n",
);
# $out will now act like Message::Passing::Output::STDOUT
=head1 DESCRIPTION
Output messages to an L<IO::Handle> like handle, i.e. any class
which implements a C<< ->print($stuff) >> method.
=head1 ATTRIBUTES
=head2 fh
The file handle object. Required.
=head2 append
String to append to each message. Defaults to "\n"
=head1 METHODS
=head2 consume
Consumes a message by printing it, followed by \n
=head1 SEE ALSO
L<Message::Passing>
=head1 SPONSORSHIP
This module exists due to the wonderful people at Suretec Systems Ltd.
<http://www.suretecsystems.com/> who sponsored its development for its
VoIP division called SureVoIP <http://www.surevoip.co.uk/> for use with
the SureVoIP API -
<http://www.surevoip.co.uk/support/wiki/api_documentation>
=head1 AUTHOR, COPYRIGHT AND LICENSE
See L<Message::Passing>.
=cut