/usr/share/perl5/Message/Passing/Role/Filter.pm is in libmessage-passing-perl 0.116-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | package Message::Passing::Role::Filter;
use Moo::Role;
use namespace::clean -except => 'meta';
requires 'filter';
with qw/
Message::Passing::Role::Input
Message::Passing::Role::Output
/;
sub consume {
my ($self, $message) = @_;
my $new = $self->filter($message);
return unless $new;
$self->output_to->consume($new);
}
1;
=head1 NAME
Message::Passing::Role::Filter - Simple abstraction for filtering messages
=head1 SYNOPSIS
package My::Filter;
use Moo;
use namespace::clean -except => 'meta';
with 'Message::Passing::Role::Filter';
sub filter {
my ($self, $message) = @_;
# Do something with $message
return $message; # Or return undef to halt message!
}
1;
=head1 DESCRIPTION
Both a producer and a consumer of messages, able to filter out messages based upon their contents,
or permute the structure of messages.
=head1 REQUIRED METHODS
=head2 filter
Called to filter the message. Returns the mangled message.
Note if you return undef then the message is not propagated further up the chain, which may be used
for filtering out unwanted messages.
=head1 REQUIRED ATTRIBUTES
=head2 output_to
From L<Message::Passing::Role::Input>.
=head1 METHODS
=head2 consume
Consumers a message, calling the filter method provided by the user with the message.
In the case where the filter returns a message, outputs the message to the next step in the chain.
=head1 SEE ALSO
=over
=item L<Message::Passing>
=item L<Message::Passing::Manual::Concepts>
=back
=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
|