--- googlecode.com/svn/trunk/Meteor/Subscriber.pm 2007/04/30 18:16:17 13 +++ googlecode.com/svn/trunk/Meteor/Subscriber.pm 2007/05/20 19:40:53 25 @@ -43,6 +43,7 @@ @Meteor::Subscriber::ISA=qw(Meteor::Connection); our %PersistentConnections=(); + our $NumAcceptedConnections=0; ############################################################################### # Factory methods @@ -63,6 +64,9 @@ $self->{'ConnectionTimeLimit'}=$self->{'ConnectionStart'}+$maxTime; } + $::Statistics->{'current_subscribers'}++; + $::Statistics->{'subscriber_connections_accepted'}++; + $self; } @@ -97,6 +101,11 @@ map { $_->checkForMaxTime($time) } @cons; } +sub numSubscribers { + + return scalar(keys %PersistentConnections); +} + ############################################################################### # Instance methods ############################################################################### @@ -132,7 +141,6 @@ my $startIndex=undef; my $backtrack=undef; my $persist=1; - my $anyPersist=0; my $subscriberID=undef; my $channels={}; foreach my $formElement (@formData) @@ -151,12 +159,9 @@ $startIndex=-$backtrack if(!defined($startIndex) && defined($backtrack)); $channels->{$channelName}->{'startIndex'}=$startIndex; - $channels->{$channelName}->{'persist'}=$persist; - $anyPersist|=$persist; $startIndex=undef; $backtrack=undef; - $persist=1; } $channelName=$1; } @@ -210,13 +215,11 @@ $startIndex=-$backtrack if(!defined($startIndex) && defined($backtrack)); $channels->{$channelName}->{'startIndex'}=$startIndex; - $channels->{$channelName}->{'persist'}=$persist; - $anyPersist|=$persist; } delete($self->{'headerBuffer'}); - if(defined($subscriberID) && $anyPersist) + if(defined($subscriberID) && $persist) { $self->{'subscriberID'}=$subscriberID; $self->deleteSubscriberWithID($subscriberID); @@ -227,9 +230,9 @@ { $self->emitOKHeader(); - $self->setChannels($channels); + $self->setChannels($channels,$persist); - $self->close(1) unless($anyPersist); + $self->close(1) unless($persist); return; } @@ -253,10 +256,10 @@ sub setChannels { my $self=shift; my $channels=shift; + my $persist=shift; foreach my $channelName (keys %{$channels}) { - my $persist=$channels->{$channelName}->{'persist'}; my $startIndex=$channels->{$channelName}->{'startIndex'}; my $channel=Meteor::Channel->channelWithName($channelName); @@ -277,6 +280,7 @@ my $self=shift; $self->emitHeader('404 Not Found'); + $::Statistics->{'errors_served'}++; # close up shop here! $self->close(); @@ -324,9 +328,14 @@ sub sendMessage { my $self=shift; my $msg=shift; + my $numMsgInThisBatch=shift; + + $numMsgInThisBatch=1 unless(defined($numMsgInThisBatch)); $self->write($msg); + $::Statistics->{'messages_served'}+=$numMsgInThisBatch; + my $msgCount=++$self->{'MessageCount'}; my $maxMsg=$::CONF{'MaxMessages'}; @@ -384,6 +393,8 @@ } } + $::Statistics->{'current_subscribers'}--; + $self->SUPER::close(); }