--- googlecode.com/svn/trunk/Meteor/Channel.pm 2008/02/04 19:24:25 46 +++ googlecode.com/svn/trunk/Meteor/Channel.pm 2008/02/27 13:55:35 50 @@ -169,12 +169,24 @@ my $subscriber=shift; my $startId=shift; my $persist=shift; + my $mode=shift || ''; + my $userAgent=shift || ''; # Note: negative $startId means go back that many messages + my $startIndex=$self->indexForMessageID($startId); + my $logStartIndex = $startIndex || $self->lastMsgID() || 0; push(@{$self->{'subscribers'}},$subscriber) if($persist); - my $startIndex=$self->indexForMessageID($startId); + &::syslog('info','', + 'joinchannel', + $subscriber->{'subscriberID'}, + $self->{'name'}, + $mode, + $logStartIndex, + $userAgent + ); + return unless(defined($startIndex)); my $msgCount=scalar(@{$self->{'messages'}}); @@ -182,18 +194,19 @@ $startIndex=0 if($startIndex<0); - if($startIndex<$msgCount) - { - $subscriber->sendMessages(@{$self->{'messages'}}[$startIndex,$msgCount-1]); + if($startIndex<$msgCount) { + $subscriber->sendMessages(@{$self->{'messages'}}[$startIndex..$msgCount-1]); } } sub removeSubscriber { my $self=shift; my $subscriber=shift; + my $reason=shift ||'unknown'; my $idx=undef; - for(my $i=0;$i{'subscribers'}});$i++) + my $numsubs = scalar(@{$self->{'subscribers'}}); + for(my $i=0;$i<$numsubs;$i++) { if($self->{'subscribers'}->[$i]==$subscriber) { @@ -205,6 +218,17 @@ if(defined($idx)) { splice(@{$self->{'subscribers'}},$idx,1); + + my $timeConnected = time - $subscriber->{'ConnectionStart'}; + &::syslog('info','', + 'leavechannel', + $subscriber->{'subscriberID'}, + $self->{'name'}, + $timeConnected, + $subscriber->{'MessageCount'}, + $subscriber->{'bytesWritten'}, + $reason + ); } $self->checkExpiration(); @@ -224,6 +248,7 @@ $message->setText($messageText); $message->setChannelName($self->{'name'}); push(@{$self->{'messages'}},$message); + &::syslog('debug',"New message ".$message->{"id"}." on channel ".$self->{'name'}); $self->trimMessageStoreBySize(); @@ -331,11 +356,8 @@ sub lastMsgID { my $self=shift; - my $numMessages=scalar(@{$self->{'messages'}}); - - return 'undefined' unless($numMessages>0); - + return undef unless($numMessages>0); @{$self->{'messages'}}[-1]->id(); } @@ -344,29 +366,17 @@ my $template=shift; $template=~s/~([a-zA-Z0-9_]*)~/ - if(!defined($1) || $1 eq '') - { + if(!defined($1) || $1 eq '') { '~'; - } - elsif($1 eq 'messageCount') - { + } elsif($1 eq 'messageCount') { $self->messageCount(); - } - elsif($1 eq 'subscriberCount') - { + } elsif($1 eq 'subscriberCount') { $self->subscriberCount(); - } - elsif($1 eq 'lastMsgID') - { + } elsif($1 eq 'lastMsgID') { $self->lastMsgID(); - } - - elsif(exists($self->{$1})) - { - $self->{$1}; - } - else - { + } elsif($1 eq 'name') { + $self->{'name'}; + } else { ''; } /gex;