ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_server
Revision: 1.10
Committed: Tue Mar 6 16:54:49 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.9: +2 -2 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 #!/opt/bin/perl
2
3 # Usage: ./chat_server
4 # implement a chat server using "traditional message passing"
5
6 use common::sense;
7 use AnyEvent::MP;
8
9 configure;
10
11 my %clients;
12
13 sub msg {
14 print "relaying: $_[0]\n";
15 snd $_, $_[0]
16 for values %clients;
17 }
18
19 our $server = port;
20
21 rcv $server, join => sub {
22 my ($client, $nick) = @_;
23
24 $clients{$client} = $client;
25
26 mon $client, sub {
27 delete $clients{$client};
28 msg "$nick (quits, @_)";
29 };
30 msg "$nick (joins)";
31 };
32
33 rcv $server, privmsg => sub {
34 my ($nick, $msg) = @_;
35 msg "$nick: $msg";
36 };
37
38 db_set eg_chat_server => $server;
39
40 warn "server ready.\n";
41
42 AE::cv->recv;
43