ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_server
Revision: 1.8
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.7: +1 -1 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 use AnyEvent::MP::Global;
9
10 configure;
11
12 my %clients;
13
14 sub msg {
15 print "relaying: $_[0]\n";
16 snd $_, $_[0]
17 for values %clients;
18 }
19
20 our $server = port;
21
22 rcv $server, join => sub {
23 my ($client, $nick) = @_;
24
25 $clients{$client} = $client;
26
27 mon $client, sub {
28 delete $clients{$client};
29 msg "$nick (quits, @_)";
30 };
31 msg "$nick (joins)";
32 };
33
34 rcv $server, privmsg => sub {
35 my ($nick, $msg) = @_;
36 msg "$nick: $msg";
37 };
38
39 AnyEvent::MP::Global::register $server, "eg_chat_server";
40
41 warn "server ready.\n";
42
43 AE::cv->recv;