From: David Kamholz Date: Sat, 4 Nov 2006 03:34:25 +0000 (+0000) Subject: rework $c->stats to cooperate with new subrequest plugin X-Git-Tag: 5.7099_04~295 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=908e3d9e7a61974b3807b7ab37862550452b2456 rework $c->stats to cooperate with new subrequest plugin --- diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index fc8f49e..2a85d29 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -1311,6 +1311,24 @@ sub finalize { $c->finalize_body; } + + if ($c->debug) { + my $elapsed = sprintf '%f', tv_interval($c->stats->getNodeValue); + my $av = sprintf '%.3f', ( $elapsed == 0 ? '??' : ( 1 / $elapsed ) ); + + my $t = Text::SimpleTable->new( [ 62, 'Action' ], [ 9, 'Time' ] ); + $c->stats->traverse( + sub { + my $action = shift; + my $stat = $action->getNodeValue; + $t->row( ( q{ } x $action->getDepth ) . $stat->{action} . $stat->{comment}, + $stat->{elapsed} || '??' ); + } + ); + + $c->log->info( + "Request took ${elapsed}s ($av/s)\n" . $t->draw ); + } return $c->response->status; } @@ -1439,35 +1457,15 @@ sub handle_request { my $status = -1; eval { if ($class->debug) { - my $start = [gettimeofday]; - my $c = $class->prepare(@arguments); - $c->stats(Tree::Simple->new); - $c->dispatch; - $status = $c->finalize; - - 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' ] ); - - $c->stats->traverse( - sub { - my $action = shift; - my $stat = $action->getNodeValue; - $t->row( ( q{ } x $action->getDepth ) . $stat->{action} . $stat->{comment}, - $stat->{elapsed} || '??' ); - } - ); - - $class->log->info( - "Request took ${elapsed}s ($av/s)\n" . $t->draw ); - } - else { - my $c = $class->prepare(@arguments); - $c->dispatch; - $status = $c->finalize; + my $secs = time - $START || 1; + my $av = sprintf '%.3f', $COUNT / $secs; + my $time = localtime time; + $class->log->info("*** Request $COUNT ($av/s) [$$] [$time] ***"); } + + my $c = $class->prepare(@arguments); + $c->dispatch; + $status = $c->finalize; }; if ( my $error = $@ ) { @@ -1521,20 +1519,17 @@ sub prepare { } ); + if ( $c->debug ) { + $c->stats(Tree::Simple->new([gettimeofday])); + $c->res->headers->header( 'X-Catalyst' => $Catalyst::VERSION ); + } + # For on-demand data $c->request->{_context} = $c; $c->response->{_context} = $c; weaken( $c->request->{_context} ); weaken( $c->response->{_context} ); - if ( $c->debug ) { - my $secs = time - $START || 1; - my $av = sprintf '%.3f', $COUNT / $secs; - my $time = localtime time; - $c->log->info("*** Request $COUNT ($av/s) [$$] [$time] ***"); - $c->res->headers->header( 'X-Catalyst' => $Catalyst::VERSION ); - } - # Allow engine to direct the prepare flow (for POE) if ( $c->engine->can('prepare') ) { $c->engine->prepare( $c, @arguments );