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

NAME

Message::Passing:Role::Script - Handy role for building messaging scripts.

SYNOPSIS

    # my_message_passer.pl
    package My::Message::Passer;
    use Moose;
    use Message::Passing::DSL;

    with 'Message::Passing::Role::Script';
    with 'MooseX::Getopt';

    has foo => (
        is => 'ro',
        isa => 'Bool',
    );

    sub build_chain {
        my $self = shift;
        log_chain {
            input example => ( output_to => 'test_out', .... );
            output test_out => ( foo => $self->foo, ... );
        };
    }

    __PACKAGE__->start unless caller;
    1;

DESCRIPTION

This role can be used to make simple message passing scripts.

The user implements a MooseX::Getopt type script class, with a build_chain method, that builds one or more Message::Passing chains and returns them.

    __PACKAGE__->start unless caller;

is then used before the end of the script.

This means that when the code is run as a script, it'll parse the command line options, and start a message passing server..

REQUIRED METHODS

build_chain

Return a chain of message processors, or an array reference with multiple chains of message processors.

METHODS

start

Called as a class method, it will build the current class as a command line script (parsing ARGV), setup the daemonization options, call the ->build_chain method supplied by the user to build the chains needed for this application.

Then enters the event loop and never returns.

change_uid_if_needed

Tries to change uid if the --user option has been supplied

deamonize_if_needed

Tires to daemonize if the --daemonize option has been supplied

set_io_priority_if_needed

Tries to set the process' IO priority if the --io_priority option has been supplied.

Valid values for the IO priority are:

none
be
rt
idle

AUTHOR

Tomas (t0m) Doran <bobtfish@bobtfish.net>

SPONSORSHIP

This module exists due to the wonderful people at Suretec Systems Ltd. <http://www.suretecsystems.com/> who sponsored it's 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>

COPYRIGHT

Copyright Suretec Systems Ltd. 2012.

Logstash (upon which many ideas for this project is based, but which we do not reuse any code from) is copyright 2010 Jorden Sissel.

LICENSE

GNU Affero General Public License, Version 3

If you feel this is too restrictive to be able to use this software, please talk to us as we'd be willing to consider re-licensing under less restrictive terms.