#!/opt/bin/perl use common::sense; use AnyEvent::MP; initialise_node; my %clients; sub msg { print "relaying: $_[0]\n"; snd $_, $_[0] for values %clients; } sub client_connect { my ($client, $name) = @_; mon $client; mon $client, sub { delete $clients{$client}; msg "$name (quits, @_)"; }; $clients{$client} = $client; msg "$name (joins)"; rcv $SELF, sub { msg "$name: $_[0]"; 0 }; } warn "server ready.\n"; AE::cv->recv;