/[meteor]/googlecode.com/svn/trunk/Meteor/Channel.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /googlecode.com/svn/trunk/Meteor/Channel.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 47 by knops.gerd, Mon Feb 4 21:06:42 2008 UTC revision 50 by andrew.betts, Wed Feb 27 13:55:35 2008 UTC
# Line 173  sub addSubscriber { Line 173  sub addSubscriber {
173          my $userAgent=shift || '';          my $userAgent=shift || '';
174                    
175          # Note: negative $startId means go back that many messages          # Note: negative $startId means go back that many messages
176            my $startIndex=$self->indexForMessageID($startId);
177            my $logStartIndex = $startIndex || $self->lastMsgID() || 0;
178                    
179          push(@{$self->{'subscribers'}},$subscriber) if($persist);          push(@{$self->{'subscribers'}},$subscriber) if($persist);
180                    
# Line 181  sub addSubscriber { Line 183  sub addSubscriber {
183                  $subscriber->{'subscriberID'},                  $subscriber->{'subscriberID'},
184                  $self->{'name'},                  $self->{'name'},
185                  $mode,                  $mode,
186                  $startId,                  $logStartIndex,
187                  $userAgent                  $userAgent
188          );          );
189                    
         my $startIndex=$self->indexForMessageID($startId);  
190          return unless(defined($startIndex));          return unless(defined($startIndex));
191                    
192          my $msgCount=scalar(@{$self->{'messages'}});          my $msgCount=scalar(@{$self->{'messages'}});
# Line 193  sub addSubscriber { Line 194  sub addSubscriber {
194                    
195          $startIndex=0 if($startIndex<0);          $startIndex=0 if($startIndex<0);
196                    
197          if($startIndex<$msgCount)          if($startIndex<$msgCount) {
198          {                  $subscriber->sendMessages(@{$self->{'messages'}}[$startIndex..$msgCount-1]);
                 $subscriber->sendMessages(@{$self->{'messages'}}[$startIndex,$msgCount-1]);  
199          }          }
200  }  }
201    
# Line 205  sub removeSubscriber { Line 205  sub removeSubscriber {
205          my $reason=shift ||'unknown';          my $reason=shift ||'unknown';
206                    
207          my $idx=undef;          my $idx=undef;
208          for(my $i=0;$i<scalar(@{$self->{'subscribers'}});$i++)          my $numsubs = scalar(@{$self->{'subscribers'}});
209            for(my $i=0;$i<$numsubs;$i++)
210          {          {
211                  if($self->{'subscribers'}->[$i]==$subscriber)                  if($self->{'subscribers'}->[$i]==$subscriber)
212                  {                  {
# Line 218  sub removeSubscriber { Line 219  sub removeSubscriber {
219          {          {
220                  splice(@{$self->{'subscribers'}},$idx,1);                  splice(@{$self->{'subscribers'}},$idx,1);
221                                    
222                    my $timeConnected = time - $subscriber->{'ConnectionStart'};
223                  &::syslog('info','',                  &::syslog('info','',
224                          'leavechannel',                          'leavechannel',
225                          $subscriber->{'subscriberID'},                          $subscriber->{'subscriberID'},
226                          $self->{'name'},                          $self->{'name'},
227                          $subscriber->{'ConnectionStart'},                          $timeConnected,
228                          $subscriber->{'MessageCount'},                          $subscriber->{'MessageCount'},
229                          $subscriber->{'bytesWritten'},                          $subscriber->{'bytesWritten'},
230                          $reason                          $reason
# Line 246  sub addMessage { Line 248  sub addMessage {
248          $message->setText($messageText);          $message->setText($messageText);
249          $message->setChannelName($self->{'name'});          $message->setChannelName($self->{'name'});
250          push(@{$self->{'messages'}},$message);          push(@{$self->{'messages'}},$message);
251            &::syslog('debug',"New message ".$message->{"id"}." on channel ".$self->{'name'});
252                    
253          $self->trimMessageStoreBySize();          $self->trimMessageStoreBySize();
254                    
# Line 353  sub indexForMessageID { Line 356  sub indexForMessageID {
356    
357  sub lastMsgID {  sub lastMsgID {
358          my $self=shift;          my $self=shift;
           
359          my $numMessages=scalar(@{$self->{'messages'}});          my $numMessages=scalar(@{$self->{'messages'}});
360                    return undef unless($numMessages>0);
         return 'undefined' unless($numMessages>0);  
           
361          @{$self->{'messages'}}[-1]->id();          @{$self->{'messages'}}[-1]->id();
362  }  }
363    
# Line 366  sub descriptionWithTemplate { Line 366  sub descriptionWithTemplate {
366          my $template=shift;          my $template=shift;
367                    
368          $template=~s/~([a-zA-Z0-9_]*)~/          $template=~s/~([a-zA-Z0-9_]*)~/
369                  if(!defined($1) || $1 eq '')                  if(!defined($1) || $1 eq '') {
                 {  
370                          '~';                          '~';
371                  }                  } elsif($1 eq 'messageCount') {
                 elsif($1 eq 'messageCount')  
                 {  
372                          $self->messageCount();                          $self->messageCount();
373                  }                  } elsif($1 eq 'subscriberCount') {
                 elsif($1 eq 'subscriberCount')  
                 {  
374                          $self->subscriberCount();                          $self->subscriberCount();
375                  }                  } elsif($1 eq 'lastMsgID') {
                 elsif($1 eq 'lastMsgID')  
                 {  
376                          $self->lastMsgID();                          $self->lastMsgID();
377                  }                  } elsif($1 eq 'name') {
378                                            $self->{'name'};
379                  elsif(exists($self->{$1}))                  } else {
                 {  
                         $self->{$1};  
                 }  
                 else  
                 {  
380                          '';                          '';
381                  }                  }
382          /gex;          /gex;

Legend:
Removed from v.47  
changed lines
  Added in v.50

  ViewVC Help
Powered by ViewVC 1.1.26