169 |
my $subscriber=shift; |
my $subscriber=shift; |
170 |
my $startId=shift; |
my $startId=shift; |
171 |
my $persist=shift; |
my $persist=shift; |
172 |
|
my $mode=shift || ''; |
173 |
|
my $userAgent=shift || ''; |
174 |
|
|
175 |
# Note: negative $startId means go back that many messages |
# Note: negative $startId means go back that many messages |
176 |
|
|
177 |
push(@{$self->{'subscribers'}},$subscriber) if($persist); |
push(@{$self->{'subscribers'}},$subscriber) if($persist); |
178 |
|
|
179 |
|
&::syslog('info','', |
180 |
|
'joinchannel', |
181 |
|
$subscriber->{'subscriberID'}, |
182 |
|
$self->{'name'}, |
183 |
|
$mode, |
184 |
|
$startId, |
185 |
|
$userAgent |
186 |
|
); |
187 |
|
|
188 |
my $startIndex=$self->indexForMessageID($startId); |
my $startIndex=$self->indexForMessageID($startId); |
189 |
return unless(defined($startIndex)); |
return unless(defined($startIndex)); |
190 |
|
|
202 |
sub removeSubscriber { |
sub removeSubscriber { |
203 |
my $self=shift; |
my $self=shift; |
204 |
my $subscriber=shift; |
my $subscriber=shift; |
205 |
|
my $reason=shift ||'unknown'; |
206 |
|
|
207 |
my $idx=undef; |
my $idx=undef; |
208 |
for(my $i=0;$i<scalar(@{$self->{'subscribers'}});$i++) |
for(my $i=0;$i<scalar(@{$self->{'subscribers'}});$i++) |
217 |
if(defined($idx)) |
if(defined($idx)) |
218 |
{ |
{ |
219 |
splice(@{$self->{'subscribers'}},$idx,1); |
splice(@{$self->{'subscribers'}},$idx,1); |
220 |
|
|
221 |
|
&::syslog('info','', |
222 |
|
'leavechannel', |
223 |
|
$subscriber->{'subscriberID'}, |
224 |
|
$self->{'name'}, |
225 |
|
$subscriber->{'ConnectionStart'}, |
226 |
|
$subscriber->{'MessageCount'}, |
227 |
|
$subscriber->{'bytesWritten'}, |
228 |
|
$reason |
229 |
|
); |
230 |
} |
} |
231 |
|
|
232 |
$self->checkExpiration(); |
$self->checkExpiration(); |
250 |
$self->trimMessageStoreBySize(); |
$self->trimMessageStoreBySize(); |
251 |
|
|
252 |
map { $_->sendMessages($message) } @{$self->{'subscribers'}}; |
map { $_->sendMessages($message) } @{$self->{'subscribers'}}; |
253 |
|
|
254 |
|
$message; |
255 |
} |
} |
256 |
|
|
257 |
sub messageCount { |
sub messageCount { |
316 |
# |
# |
317 |
return undef unless(defined($id)); |
return undef unless(defined($id)); |
318 |
|
|
319 |
my $numMessages=scalar(scalar(@{$self->{'messages'}})); |
my $numMessages=scalar(@{$self->{'messages'}}); |
320 |
|
|
321 |
return undef unless($numMessages); |
return undef unless($numMessages); |
322 |
return -1 unless($id ne ''); |
return -1 unless($id ne ''); |
351 |
return $low; |
return $low; |
352 |
} |
} |
353 |
|
|
354 |
|
sub lastMsgID { |
355 |
|
my $self=shift; |
356 |
|
|
357 |
|
my $numMessages=scalar(@{$self->{'messages'}}); |
358 |
|
|
359 |
|
return 'undefined' unless($numMessages>0); |
360 |
|
|
361 |
|
@{$self->{'messages'}}[-1]->id(); |
362 |
|
} |
363 |
|
|
364 |
sub descriptionWithTemplate { |
sub descriptionWithTemplate { |
365 |
my $self=shift; |
my $self=shift; |
366 |
my $template=shift; |
my $template=shift; |
378 |
{ |
{ |
379 |
$self->subscriberCount(); |
$self->subscriberCount(); |
380 |
} |
} |
381 |
|
elsif($1 eq 'lastMsgID') |
382 |
|
{ |
383 |
|
$self->lastMsgID(); |
384 |
|
} |
385 |
|
|
386 |
elsif(exists($self->{$1})) |
elsif(exists($self->{$1})) |
387 |
{ |
{ |
388 |
$self->{$1}; |
$self->{$1}; |