ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_server2
Revision: 1.4
Committed: Wed Mar 21 01:14:12 2012 UTC (12 years, 2 months ago) by root
Branch: MAIN
CVS Tags: rel-2_02, rel-2_01, rel-2_0, HEAD
Changes since 1.3: +3 -3 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    
9 root 1.2 configure;
10 root 1.1
11 root 1.4 db_set eg_chat_server2 => $NODE;
12 root 1.1
13     my %clients;
14    
15     sub msg {
16     print "relaying: $_[0]\n";
17     snd $_, $_[0]
18     for values %clients;
19     }
20    
21     sub client_connect {
22     my ($client, $nick) = @_;
23    
24     mon $client;
25 root 1.4 mon $client, psub {
26 root 1.1 delete $clients{$client};
27     msg "$nick (quits, @_)";
28     };
29    
30     $clients{$client} = $client;
31    
32     msg "$nick (joins)";
33    
34     rcv $SELF, sub { msg "$nick: $_[0]" };
35     }
36    
37     warn "server ready.\n";
38    
39     AE::cv->recv;
40 root 1.4