NAME
XAS::Lib::App - The base class to write procedures within the XAS environment
SYNOPSIS
DESCRIPTION
This module defines a base class for writing procedures. It provides signal handling, options processing, along with a exit handler.
METHODS
new
This method initializes the module. It inherits from XAS::Base and takes these additional parameters:
- -throws
-
This changes the default error message from "changeme" to something useful.
- -facility
-
This will change the facility of the alert. The default is 'systems'.
- -priority
-
This will change the priority of the alert. The default is 'low'.
run
This method sets up a global exception handler and calls main(). The main() method will be passed one parameter: an initialized handle to this class.
Example
sub
main {
my
$self
=
shift
;
$self
->
log
->debug(
'in main'
);
}
- Exception Handling
-
If an exception is caught, the global exception handler will send an alert, write the exception to the log and returns an exit code of 1.
- Normal Completion
-
When the procedure completes successfully, it will return an exit code of 0.
To change this behavior you would need to override the exit_handler() method.
main
This is where your main line logic starts.
options
This method sets up additional cli options. Option handling is provided by Getopt::Long. To access these options you need to define accessors for them.
Example
version
=>
'0.01'
,
base
=>
'XAS::Lib::App'
,
accessors
=>
'widget'
;
sub
main {
my
$self
=
shift
;
$self
->
log
->info(
'starting up'
);
sleep
(60);
$self
->
log
->info(
'shutting down'
);
}
sub
options {
my
$self
=
shift
;
return
{
'widget=s'
=>
sub
{
$self
->{widget} =
uc
(
$_
[1]);
}
};
}
define_signals
This method sets up basic signal handling. By default this is only for the INT and QUIT signals.
Example
sub
define_signals {
my
$self
=
shift
;
$SIG
{INT} = \
&signal_handler
;
$SIG
{QUIT} = \
&singal_handler
;
}
define_pidfile
This is an entry point to define a pid file.
define_daemon
This is an entry point so the procedure can daemonize.
signal_handler($signal)
This method is a default signal handler. By default it throws an exception. It takes one parameter.
OPTIONS
This module handles the following command line options.
--facility
Defines the facility to use. Defaults to 'systems'. This will override the class parameter.
--priority
Defines the priority to use. Defaults to 'low'. This will override the class parameter.
--debug
This toggles debugging output.
--[no]alerts
This toggles sending alerts. They are on by default.
--help
This prints out a short help message based on the procedures pod.
--manual
This displaces the procedures manual in the defined pager.
--version
This prints out the version of the module.
--log-type
What type of log to use. By default the log is displayed on the console. Log types can be one of the following "console", "file", "json" or "syslog".
--log-facility
What log facility class to use. This follows syslog convention. By default the facility is "local6".
--log-file
The name of the log file. When --logfile is specified, it implies a log type of "file".
SEE ALSO
- XAS::Lib::App::Daemon
- XAS::Lib::App::Service
- XAS::Lib::App::Service::Unix
- XAS::Lib::App::Service::Win32
- XAS
AUTHOR
Kevin L. Esteb, <kevin@kesteb.us>
COPYRIGHT AND LICENSE
Copyright (c) 2012-2015 Kevin L. Esteb
This is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0. For details, see the full text of the license at http://www.perlfoundation.org/artistic_license_2_0.