use
AC::DC::IO {
monitor
=>
'AC::MrGamoo::Stats'
};
require
'AC/protobuf/mrgamoo.pl'
;
require
'AC/protobuf/std_reply.pl'
;
sub
new {
my
$class
=
shift
;
my
%p
=
@_
;
AC::MrGamoo::MySelf->customize(
$p
{class_myself} );
AC::MrGamoo::FileList->customize(
$p
{class_filelist} );
AC::MrGamoo::ReadInput->customize(
$p
{class_readinput} );
return
bless
\
$class
,
$class
;
}
sub
daemon {
my
$me
=
shift
;
my
$cfile
=
shift
;
my
$opt
=
shift
;
die
"no config file specified\n"
unless
$cfile
;
$AC::MrGamoo::CONF
= AC::MrGamoo::Config->new(
$cfile
,
onreload
=>
sub
{},
);
initlog(
'mrgamoo'
, (conf_value(
'syslog'
) ||
'local4'
),
$opt
->{debugall} );
AC::MrGamoo::Debug->init(
$opt
->{debugall},
$AC::MrGamoo::CONF
);
daemonize(5,
'mrgamood'
,
$opt
->{argv})
unless
$opt
->{foreground};
verbose(
"starting."
);
$SIG
{CHLD} =
$SIG
{PIPE} =
sub
{};
$SIG
{INT} =
$SIG
{TERM} =
$SIG
{QUIT} = \
&AC::DC::IO::request_exit
;
my
$port
=
$opt
->{port} || conf_value(
'port'
);
AC::MrGamoo::About->init(
$port
);
AC::MrGamoo::MySelf->init(
$port
,
$opt
->{persistent_id} );
AC::DC::IO::TCP::Server->new(
$port
,
'AC::MrGamoo::Server'
);
AC::DC::Sched->new(
info
=>
'check config files'
,
freq
=> 30,
func
=>
sub
{
$AC::MrGamoo::CONF
->check() },
);
run_and_watch(
(
$opt
->{foreground} ||
$opt
->{debugall}),
\
&AC::DC::IO::mainloop
,
);
}
1;