package RunApp::Control::AppControl; use strict; require App::Control::Apache; require YAML; use base qw(RunApp::Control); use Config; sub build { my $self = shift; my ($conf) = @_; $self->{CONTROL} ||= 'App::Control'; $self->load($self->{CONTROL}); $self->{control} = $self->{CONTROL}->new ( EXEC => $self->{binary}, ARGS => $self->{args}, PIDFILE => $conf->{pidfile}, SLEEP => 1, LOOP => 1); $self->write; } sub dispatch { my ($self, $cmd) = @_; if ($self->{control}) { $self->{control}->$cmd; } else { system ($self->{file}, $cmd); } } sub write { my $self = shift; open my $fh, '>', $self->{file} or die "$self->{file}: $!"; #warn ". building $self->{file}\n"; my $control = YAML::Dump ($self->{control}); my $perl = $Config{'perlpath'}; $perl = $^X if $^O eq 'VMS'; print $fh (<< "."); #!$perl -w use strict; use App::Control::Apache; require YAML; my \$cmd = shift or die "\$0: \\n"; YAML::Load ( << 'YAML')->dispatch (\$cmd); $control YAML . } =head1 NAME RunApp::Control::AppControl - Class for controlling daemon with App::Control =head1 SYNOPSIS see RunApp::Apache =head1 DESCRIPTION The class writes to a perl script that uses App::Control to control the daemon in the C phase of L, and invokes the control script in other phases. =head1 SEE ALSO L =head1 AUTHORS Chia-liang Kao =head1 COPYRIGHT Copyright (C) 2002-5, Fotango Ltd. This module is free software; you can redistribute it or modify it under the same terms as Perl itself. =cut 1;