NAME

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

SYNOPSIS

# my_message_passer.pl
package My::Message::Passer;
use Moo;
use MooX::Options;
use MooX::Types::MooseLike::Base qw/ Bool /;
use Message::Passing::DSL;

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

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

sub build_chain {
    my $self = shift;
    message_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 MooX::Options 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.

ATTRIBUTES

daemonize

Do a double fork and lose controlling terminal.

Used to run scripts in the background.

io_priority

The IO priority to run the script at..

Valid values for the IO priority are:

none
be
rt
idle

user

Changes the user the script is running as. You probably need to run the script as root for this option to work.

pid_file

Write a pid file out. Useful for running Message::Passing scripts as daemons and/or from init.d scripts.

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

daemonize_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.

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>

AUTHOR, COPYRIGHT AND LICENSE

See Message::Passing.