The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Black::Board::Subscriber - Subscriber class for Black::Board

VERSION

version 0.0001

SYNOPSIS

    use Black::Board::Subscriber;
    use Black::Board::Topic;

    $topic = Black::Board::Topic->new( name => "Logging" );

    $topic->add_subscriber(
        Black::Board::Subscriber->new(
            subscription => sub {
                $logger->log( %{ $_->params } );
                return $_->cancel_bubble;
            }
        )
    );

    $topic->add_subscriber(
        Black::Board::Subscriber->new(
            subscription => sub {
                return $_->clone(
                    params => $_->params->merge({
                        message => '[Prefix1] ' . $_->params->{message}
                    })
                )
            }
        )
    );

    $topic->add_subscriber(
        Black::Board::Subscriber->new(
            subscription => sub {
                return $_->clone(
                    params => $_->params->merge({
                        message => '[Prefix2] ' . $_->params->{message}
                    })
                )
            }
        )
    );

    # --- OR --- #

    use Black::Board;

    topic "Logging";

    subscriber Logging => sub {
        $logger->log( %{ $_->params } );
        return $_->cancel_bubble;
    };

    subscriber Logging => sub {
        my %args = @_;
        return $args{message}->clone(
            params => $args{message}->params->merge({
                message => '[Prefix1] ' . $args{message}->params->{message}
            })
        )
    };

    subscriber Logging => sub {
        return $_->clone(
            params => $_->params->merge({
                message => '[Prefix2] ' . $_->params->{message}
            })
        )
    };

DESCRIPTION

This is the Subscriber class for Black::Board. This is the class that represents a subscription to a specific Topic. It provides a delivery interface for dispatching a Message to a CodeRef.

ATTRIBUTES

subscription

subscription is an attribute which contains the CodeRef called to deliver a message. This CodeRef should expect the Black::Board::Message object as it's only argument. This object will also be localized into $_.

    Black::Board::Subscriber->new(
        subscription => sub {
            my $message = shift;
            # -or-
            my $message = $_
        }
    );

METHODS

deliver

This method is usually called by "METHODS/deliver" in Black::Board::Topic. It takes the Black::Board::Message object to be delivered.

This method sets the current Subscriber in the Message instance to this Subscriber until this delivery is over (local()).

See "ATTRIBUTES/subscription" to see how the subscription is dispatched.

SEE ALSO

AUTHOR

Scott Beck <sabeck@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Scott Beck <sabeck@cpan.org>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.