Revision: 81 Author: matt Date: 2006-08-13 16:15:08 +0000 (Sun, 13 Aug 2006)
Log Message: ----------- Stats console output response_sent hook Modified Paths: -------------- trunk/lib/AxKit2/Client.pm trunk/lib/AxKit2/Connection.pm trunk/lib/AxKit2/Console.pm trunk/lib/AxKit2/Plugin.pm Modified: trunk/lib/AxKit2/Client.pm =================================================================== --- trunk/lib/AxKit2/Client.pm 2006-08-13 02:19:05 UTC (rev 80) +++ trunk/lib/AxKit2/Client.pm 2006-08-13 16:15:08 UTC (rev 81) @@ -243,4 +243,18 @@ } } +sub hook_response_sent { + my $self = shift; + my ($ret, $out) = $self->run_hooks('response_sent', @_); + if ($ret == DONE) { + return 1; + } + elsif ($ret == DECLINED || $ret == OK) { + return; + } + else { + # TODO: errors? + } +} + 1; Modified: trunk/lib/AxKit2/Connection.pm =================================================================== --- trunk/lib/AxKit2/Connection.pm 2006-08-13 02:19:05 UTC (rev 80) +++ trunk/lib/AxKit2/Connection.pm 2006-08-13 16:15:08 UTC (rev 81) @@ -207,7 +207,12 @@ # support persistence, 0 means we're discarding this connection. sub http_response_sent { my AxKit2::Connection $self = $_[0]; - + + if ($self->hook_response_sent($self->{headers_out}->response_code)) { + $self->close("plugin"); + return 0; + } + return 0 if $self->{sock_closed}; # close if we're supposed to Modified: trunk/lib/AxKit2/Console.pm =================================================================== --- trunk/lib/AxKit2/Console.pm 2006-08-13 02:19:05 UTC (rev 80) +++ trunk/lib/AxKit2/Console.pm 2006-08-13 16:15:08 UTC (rev 81) @@ -17,7 +17,7 @@ use constant CLEANUP_TIME => 5; # seconds -our $PROMPT = "Enter command (or \"HELP\" for help)\n"; +our $PROMPT = "\nEnter command (or \"HELP\" for help)\n> "; Danga::Socket->AddTimer(CLEANUP_TIME, \&_do_cleanup); @@ -118,7 +118,7 @@ } else { # No such method - i.e. unrecognized command - return $self->write("command '$cmd' unrecognised\n"); + return $self->write("command '$cmd' unrecognised\n$PROMPT"); } } @@ -241,7 +241,6 @@ sub DBI::FIRSTKEY {} $helptext{leaks} = "LEAKS [DUMP] - Run Devel::GC::Helper to list leaks with optional Dumper output"; -my %prev_leaks; sub cmd_leaks { my $self = shift; my $dump = shift || ''; @@ -255,6 +254,8 @@ #$Data::Dumper::Deparse = 1; } + $self->write("Gathering GC stats in the background...\n"); + my $pid = fork; die "Can't fork" unless defined $pid; return if $pid; @@ -271,6 +272,33 @@ exit; } +$helptext{stats} = "STATS - Show status and statistics"; +sub cmd_stats { + my $self = shift; + + my $output = "Current Status as of " . gmtime() . " GMT\n\n"; + + if (defined &AxKit2::Plugin::stats::get_stats) { + # Stats plugin is loaded + $output .= AxKit2::Plugin::stats->get_stats; + } + + my $descriptors = Danga::Socket->DescriptorMap; + + my $current_connections = 0; + my $current_dns = 0; + foreach my $fd (keys %$descriptors) { + my $pob = $descriptors->{$fd}; + if ($pob->isa("AxKit2::Connection")) { + $current_connections++; + } + } + + $output .= "Current Connections: $current_connections\n"; + + $self->write($output); +} + # Cleanup routine to get rid of timed out sockets sub _do_cleanup { my $now = time; Modified: trunk/lib/AxKit2/Plugin.pm =================================================================== --- trunk/lib/AxKit2/Plugin.pm 2006-08-13 02:19:05 UTC (rev 80) +++ trunk/lib/AxKit2/Plugin.pm 2006-08-13 16:15:08 UTC (rev 81) @@ -10,7 +10,7 @@ our @hooks = qw( logging config pre-connection connect post_read_request body_data uri_translation access_control authentication authorization - fixup mime_map xmlresponse response disconnect error + fixup mime_map xmlresponse response response_sent disconnect error ); our %hooks = map { $_ => 1 } @hooks;