Author: spadkins
Date: Thu Oct 26 06:17:20 2006
New Revision: 7982

Modified:
   p5ee/trunk/App-Context/lib/App/Context/HTTP.pm

Log:
add UI time log, activated with app.Context.timer option

Modified: p5ee/trunk/App-Context/lib/App/Context/HTTP.pm
==============================================================================
--- p5ee/trunk/App-Context/lib/App/Context/HTTP.pm      (original)
+++ p5ee/trunk/App-Context/lib/App/Context/HTTP.pm      Thu Oct 26 06:17:20 2006
@@ -12,6 +12,8 @@
 @ISA = ( "App::Context" );
 
 use App::UserAgent;
+use Time::HiRes qw(gettimeofday tv_interval);
+use Date::Format;
 
 use strict;
 
@@ -132,6 +134,9 @@
     &App::sub_entry if ($App::trace);
     my ($self) = @_;
 
+    my $timer = $self->{options}{"app.Context.timer"};
+    my $content_description = "Unknown";
+    $self->start_timer() if ($timer);
     eval {
         $self->dispatch_events_begin();
 
@@ -143,41 +148,36 @@
         while ($#$events > -1) {
             $event = shift(@$events);
             ($service, $name, $method, $args) = @$event;
-            #if ($service eq "SessionObject") {
-            #    $self->call($service, $name, $method, $args);
-            #}
-            #else {
-                $results = $self->call($service, $name, $method, $args);
-                #$results = [ $results ] if (!ref($results));
-            #    $display_current_widget = 0;
-            #}
+            $results = $self->call($service, $name, $method, $args);
+            $args = join(",", @$args) if (ref($args) eq "ARRAY");
+            $self->lap_timer("$service($name).$method($args)") if ($timer);
         }
-        #if ($display_current_widget) { }
-        #if (! defined $results) {
-            my $type = $self->so_get("default","ctype","SessionObject");
-            $name = $self->so_get("default","cname");
-            #if ($xyz) {
-                $results = $self->service($type, $name);
-            #}
-        #}
+        my $type = $self->so_get("default","ctype","SessionObject");
+        $name = $self->so_get("default","cname");
+        $results = $self->service($type, $name);
 
         my $response = $self->response();
         my $ref = ref($results);
         if (!$ref || $ref eq "ARRAY" || $ref eq "HASH") {
             $response->content($results);
+            $content_description = "results [$ref]";
         }
         elsif ($results->isa("App::Service")) {
             $response->content($results->content());
             $response->content_type($results->content_type());
+            $content_description = $results->content_description();
         }
         else {
             $response->content($results->internals());
+            $content_description = "$type($name).internals()";
         }
 
         $self->send_response();
+        $self->stop_timer($content_description) if ($timer);
     };
     if ($@) {
         $self->send_error($@);
+        $self->stop_timer("ERROR [$content_description]: $@") if ($timer);  # 
before we shut down database connections
     }
 
     if ($self->{options}{debug_context}) {
@@ -524,5 +524,83 @@
     return $user;
 }
 
+#04899 000.000000 000.000000 Start 2006/06/28 21:56:52.827139 GET            
[222.252.72.65] localhost
+#04899 000.023569 000.023569 MarketVision[8] Controller code loaded
+#04899 000.394568 000.418137 MarketVision[666] code loaded, vars initialized
+#04899 000.025432 000.443569 MarketVision[671] CGI vars read [handaeww] 
[handaeww]
+#04899 000.000243 000.443812 MarketVision[673] announcement checked
+#04899 000.011994 000.455806 MarketVision[676] db open
+#04899 000.328063 000.783869 MarketVision[689] Context+Repository open
+#04899 000.115011 000.898880 MarketVision[706] got orgs
+#04899 000.054074 000.952954 Controller.pm[262] screen transitions presel=3 
sel=3 prescreen=main :
+#04899 000.000101 000.953055 Controller.pm[292] none executed []
+#04899 001.501768 002.454823 Controller.pm[300] screen shown [main]
+#04899 000.000084 002.454907 MarketVision[771] dispatched events
+#04899 000.000560 002.455467 MarketVision[787] db disconnected.
+#04899 000.000050 002.455517 End   2006/06/28 21:56:55.282656 usr0.8s sys0.1s 
ops:0
+
+sub start_timer {
+    &App::sub_entry if ($App::trace);
+    my ($self) = @_;
+
+    my $app = $self->{options}{app} || "app";
+    open(App::Context::TIMELOG, ">> $app.log");
+
+    #my $old_handle = select(App::Context::TIMELOG);  # "select" TIMELOG and 
save previously selected handle
+    #$| = 1;                                          # set to non-buffered 
output (perform flush) after each write
+    #select ($old_handle);                            # restore previously 
selected handle
+
+    my $time = [ gettimeofday ];
+    $self->{time_start} = $time;
+    $self->{time_lap} = $time;
+
+    printf App::Context::TIMELOG "$$ %010.6f %010.6f Start : %s [EMAIL 
PROTECTED]",
+        0, 0,
+        time2str("%Y-%m-%d %H:%M:%S",$time->[0]),
+        $ENV{REQUEST_METHOD},
+        $ENV{REMOTE_USER},
+        $ENV{REMOTE_ADDR};
+
+    &App::sub_exit() if ($App::trace);
+}
+
+sub lap_timer {
+    &App::sub_entry if ($App::trace);
+    my ($self, $desc) = @_;
+
+    my $time = [ gettimeofday ];
+
+    printf App::Context::TIMELOG "$$ %010.6f %010.6f * $desc\n",
+        tv_interval($self->{time_start}, $time),
+        tv_interval($self->{time_lap}, $time);
+
+    $self->{time_lap} = $time;
+
+    &App::sub_exit() if ($App::trace);
+}
+
+sub stop_timer {
+    &App::sub_entry if ($App::trace);
+    my ($self, $desc) = @_;
+
+    my $time = [ gettimeofday ];
+
+    printf App::Context::TIMELOG "$$ %010.6f %010.6f End   : $desc\n",
+        tv_interval($self->{time_start}, $time),
+        tv_interval($self->{time_lap}, $time);
+
+    #    time2str("%Y-%m-%d %H:%M:%S",$time->[0]),
+    #    $ENV{REQUEST_METHOD},
+    #    $ENV{REMOTE_USER},
+    #    $ENV{REMOTE_ADDR};
+
+    delete $self->{time_start};
+    delete $self->{time_lap};
+
+    close(App::Context::TIMELOG);
+
+    &App::sub_exit() if ($App::trace);
+}
+
 1;
 

Reply via email to