sub _stats_finish_execute {
my ( $c, $info ) = @_;
- my ( $start, $node ) = @{ $info }{qw/start node/};
-
- my $elapsed = tv_interval $start;
- my $value = $node->getNodeValue;
+ my $elapsed = tv_interval $info->{start};
+ my $value = $info->{node}->getNodeValue;
$value->{elapsed} = sprintf( '%fs', $elapsed );
}
# Always expect worst case!
my $status = -1;
eval {
- my $stats = ( $class->debug ) ? Tree::Simple->new: q{};
-
- my $handler = sub {
+ if ($class->debug) {
+ my $start = [gettimeofday];
my $c = $class->prepare(@arguments);
- $c->stats($stats);
+ $c->stats(Tree::Simple->new);
$c->dispatch;
- return $c->finalize;
- };
+ $status = $c->finalize;
- if ( $class->debug ) {
- my $start = [gettimeofday];
- $status = &$handler;
my $elapsed = tv_interval $start;
$elapsed = sprintf '%f', $elapsed;
my $av = sprintf '%.3f',
( $elapsed == 0 ? '??' : ( 1 / $elapsed ) );
my $t = Text::SimpleTable->new( [ 62, 'Action' ], [ 9, 'Time' ] );
- $stats->traverse(
+ $c->stats->traverse(
sub {
my $action = shift;
my $stat = $action->getNodeValue;
$class->log->info(
"Request took ${elapsed}s ($av/s)\n" . $t->draw );
}
- else { $status = &$handler }
-
+ else {
+ my $c = $class->prepare(@arguments);
+ $c->dispatch;
+ $status = $c->finalize;
+ }
};
if ( my $error = $@ ) {