+ return (controller => $controller, action => $action, request_type => $request_type);
+}
+
+sub _cache_file_modification_times {
+ my ($self) = @_;
+
+ return unless $self->_interface_is_fcgi && $::lx_office_conf{debug}->{restart_fcgi_process_on_changes};
+
+ require File::Find;
+ require POSIX;
+
+ my $wanted = sub {
+ return unless $File::Find::name =~ m/\.(?:pm|f?pl|html|conf|conf\.default)$/;
+ $fcgi_file_cache{ $File::Find::name } = (stat $File::Find::name)[9];
+ };
+
+ my $cwd = POSIX::getcwd();
+ File::Find::find($wanted, map { "${cwd}/${_}" } qw(config bin SL templates/webpages));
+ map { my $name = "${cwd}/${_}"; $fcgi_file_cache{$name} = (stat $name)[9] } qw(admin.pl dispatcher.fpl);
+}
+
+sub _watch_for_changed_files {
+ my ($self) = @_;
+
+ return unless $self->_interface_is_fcgi && $::lx_office_conf{debug}->{restart_fcgi_process_on_changes};
+
+ my $ok = all { (stat($_))[9] == $fcgi_file_cache{$_} } keys %fcgi_file_cache;
+ return if $ok;
+ $::lxdebug->message(LXDebug::DEBUG1(), "Program modifications detected. Restarting.");
+ exit;