#!/opt/bin/perl

use AnyEvent;
use AnyEvent::MP;

initialise_node "127.0.0.1:1299";

print "initialized server\n";

my $chatter_port = port;

reg $chatter_port, "chatter";

my %client_ports;

rcv $chatter_port,
   join => sub {
      my ($tag, $client_port) = @_;

      print "got new client port: $client_port\n";
      $client_ports{$client_port} = 1;

      mon $client_port, sub {
         my (@reason) = @_;
         print "client disconnected: " . join (', ', @reason) . "\n";
         delete $client_ports{$client_port}
      };

      0
   },
   message => sub {
      my ($tag, $msg) = @_;

      print "message> $msg\n";

      snd $_, message => $msg
         for keys %client_ports;

      0
   };

AnyEvent->condvar->recv;
