ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_server2
Revision: 1.2
Committed: Mon Aug 31 10:07:04 2009 UTC (14 years, 9 months ago) by root
Branch: MAIN
CVS Tags: rel-0_95, rel-1_0
Changes since 1.1: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #!/opt/bin/perl
2    
3     # Usage: ./chat_server
4     # implement a chat client using "bridge-head" methodology.
5    
6     use common::sense;
7     use AnyEvent::MP;
8     use AnyEvent::MP::Global;
9    
10 root 1.2 configure;
11 root 1.1
12     AnyEvent::MP::Global::register $NODE, "eg_chat_server2";
13    
14     my %clients;
15    
16     sub msg {
17     print "relaying: $_[0]\n";
18     snd $_, $_[0]
19     for values %clients;
20     }
21    
22     sub client_connect {
23     my ($client, $nick) = @_;
24    
25     mon $client;
26     mon $client, sub {
27     delete $clients{$client};
28     msg "$nick (quits, @_)";
29     };
30    
31     $clients{$client} = $client;
32    
33     msg "$nick (joins)";
34    
35     rcv $SELF, sub { msg "$nick: $_[0]" };
36     }
37    
38     warn "server ready.\n";
39    
40     AE::cv->recv;