--- googlecode.com/svn/trunk/Meteor/Subscriber.pm 2008/02/27 14:07:10 52 +++ googlecode.com/svn/trunk/Meteor/Subscriber.pm 2008/02/27 21:58:56 53 @@ -167,10 +167,22 @@ $PersistentConnections{$self->{'subscriberID'}}=$self; } - if(scalar(keys %{$channels})) - { + if(scalar(keys %{$channels})) { + + $self->{'channelinfo'} = ''; + my $citemplate = $self->getConf('ChannelInfoTemplate'); + foreach $channelName (keys %{$channels}) { + my $channel=Meteor::Channel->channelWithName($channelName); + $self->{'channels'}->{$channelName}=$channel; + $self->{'channelinfo'} .= $channel->descriptionWithTemplate($citemplate); + + } $self->emitOKHeader(); - $self->setChannels($channels,$persist,$self->{'mode'},$useragent); + foreach $channelName (keys %{$channels}) { + my $startIndex=$channels->{$channelName}->{'startIndex'}; + $self->{'channels'}->{$channelName}->addSubscriber($self,$startIndex,$persist,$self->{'mode'},$useragent); + } + delete ($self->{'channels'}) unless($persist); $self->close(1, 'responseComplete') unless($persist); return; } @@ -196,25 +208,6 @@ } } -sub setChannels { - my $self=shift; - my $channels=shift; - my $persist=shift; - my $mode=shift || ''; - my $userAgent=shift || ''; - - foreach my $channelName (keys %{$channels}) - { - my $startIndex=$channels->{$channelName}->{'startIndex'}; - - my $channel=Meteor::Channel->channelWithName($channelName); - - $self->{'channels'}->{$channelName}=$channel if($persist); - - $channel->addSubscriber($self,$startIndex,$persist,$mode,$userAgent); - } -} - sub emitOKHeader { my $self=shift; @@ -238,28 +231,17 @@ my $header=$self->getConf('HeaderTemplate'); $header=~s/~([^~]*)~/ - if(!defined($1) || $1 eq '') - { + if(!defined($1) || $1 eq '') { '~'; - } - elsif($1 eq 'server') - { + } elsif($1 eq 'server') { $::PGM; - } - elsif($1 eq 'status') - { + } elsif($1 eq 'status') { $status; - } - elsif($1 eq 'servertime') - { + } elsif($1 eq 'servertime') { time; - } - elsif($1 eq 'channelinfo') - { - Meteor::Channel->listChannelsUsingTemplate($self->getConf('ChannelInfoTemplate')); - } - else - { + } elsif($1 eq 'channelinfo') { + $self->{'channelinfo'}; + } else { ''; } /gex;