NAME

Message::Router - Fast, simple message routing

SYNOPSIS

use Message::Router qw(mroute mroute_config);

sub main::handler1 {
    my %args = @_;
    #gets:
    # $args{message}
    # $args{route}
    # $args{routes}
    # $args{forward}
    print "$args{message}->{this}\n"; #from the transform
    print "$args{forward}->{x}\n";    #from the specific forward
}

mroute_config({
    routes => [
        {   match => {
                a => 'b',
            },
            forwards => [
                {   handler => 'main::handler1',
                    x => 'y',
                },
            ],
            transform => {
                this => 'that',
            },
        }
    ],
});
mroute({a => 'b'}); #prints 'that', and then 'y', per the handler1 sub

mroute_config({
    routes => {
        10 => {
            match => {
                a => 'b',
            },
            forwards => [
                {   handler => 'main::handler1',
                    x => 'y',
                },
            ],
            transform => {
                this => 'that',
            },
        }
    ],
});
mroute({a => 'b'}); #prints 'that', and then 'y', per the handler1 sub
#same as the ARRAY based, but it uses the HASH keys in numerical order

DESCRIPTION

This library allows fast, flexible and general message routing.

FUNCTIONS

mroute_config($config);

The config used by all mroute calls

mroute($message);

Pass $message through the config; this will emit zero or more callbacks.

TODO

A config validator.

Short-circuiting

More flexible match and transform configuration forms

BUGS

None known.

COPYRIGHT

Copyright (c) 2012, 2013 Dana M. Diederich. All Rights Reserved.

AUTHOR

Dana M. Diederich <dana@realms.org>