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, 1 month 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

# Content
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 configure;
10
11 db_set eg_chat_server2 => $NODE;
12
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 mon $client, psub {
26 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