=head1 VERSION
-Version 0.13
+Version 0.16
=cut
-our $VERSION = '0.13';
+our $VERSION = '0.16';
=head1 SYNOPSIS
use IPC::MorseSignals::Emitter;
- my $deuce = new IPC::MorseSignals::Emitter speed => 1024;
+ my $deuce = IPC::MorseSignals::Emitter->new(speed => 1024);
$deuce->post('HLAGH') for 1 .. 3;
$deuce->send($pid);
=head1 METHODS
-=head2 C<< new < delay => $seconds, speed => $bauds, %bme_options > >>
+=head2 C<new>
-Creates a new emitter object. C<delay> specifies the delay between two sends, in seconds, while C<speed> is the number of bits sent per second. The delay value has priority over the speed. Extra arguments are passed to L<Bit::MorseSignals::Emitter/new>.
+ my $ime = IPC::MorseSignals::Emitter->new(
+ delay => $seconds,
+ speed => $bauds,
+ %bme_options,
+ );
+
+Creates a new emitter object. C<delay> specifies the delay between two sends, in seconds, while C<speed> is the number of bits sent per second. The delay value has priority over the speed. Default delay is 1 second. Extra arguments are passed to L<Bit::MorseSignals::Emitter/new>.
=cut
bless $self, $class;
}
-=head2 C<send $pid>
+=head2 C<send>
+
+ $ime->send($pid);
-Sends messages enqueued with L<Bit::MorseSignals::Emitter/post> to the process C<$pid> (or to all the C<@$pid> if C<$pid> is an array reference).
+Sends messages enqueued with L<Bit::MorseSignals::Emitter/post> to the process C<$pid> (or to all the C<@$pid> if C<$pid> is an array reference, in which case duplicated targets are stripped off).
=cut
my ($self, $dest) = @_;
_check_self($self);
return unless defined $dest;
- my @dests = grep $_ > 0, ref $dest eq 'ARRAY' ? map int, grep defined, @$dest
- : int $dest;
+ my %count;
+ my @dests = grep $_ > 0 && !$count{$_}++, # Remove duplicates.
+ ref $dest eq 'ARRAY' ? map int, grep defined, @$dest
+ : int $dest;
return unless @dests;
while (defined(my $bit = $self->pop)) {
my @sigs = (SIGUSR1, SIGUSR2);
}
}
-=head2 C<< delay < $seconds > >>
+=head2 C<delay>
+
+ my $delay = $ime->delay;
+ $ime->delay($seconds);
Returns the current delay in seconds, or set it if an argument is provided.
return $self->{delay};
}
-=head2 C<< speed < $bauds > >>
+=head2 C<speed>
+
+ my $speed = $ime->speed;
+ $ime->speed($bauds);
Returns the current speed in bauds, or set it if an argument is provided.
Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
-You can contact me by mail or on #perl @ FreeNode (vincent or Prof_Vince).
+You can contact me by mail or on C<irc.perl.org> (vincent).
=head1 BUGS
=head1 COPYRIGHT & LICENSE
-Copyright 2007-2008 Vincent Pit, all rights reserved.
+Copyright 2007,2008,2013 Vincent Pit, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.