|
sub broadcast { my ($from, $line) = @_; foreach my $handle (keys %handler) { send_msg($handler{$handle}->{handle}, "$from: $line"); } } sub send_msg { my ($handle, $line) = @_; my $handler = $handler{$handle}; return unless defined $handler->{obuf}; $write->add($handle) if @{$handler->{obuf}} == 0; push(@{$handler->{obuf}}, "$line\r\n"); } |
Bei einer Ausgabe an Klienten wird zunächst nur
der entsprechende Ausgabe-Puffer ergänzt.
| |
Dabei ist darauf zu achten, daß die entsprechende
Verbindung in die Menge $write aufgenommen wird, falls
der Ausgabe-Puffer vorher leer war.
| |
Wenn Zeiger als Schlüssel in einem assoziativen
Array verwendet werden (wie hier $handle bei %handler),
dann liefert keys %handler keine verwertbaren Zeiger
(Restriktion von Perl).
|
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003 |