ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_server2
Revision: 1.1
Committed: Wed Aug 19 05:57:15 2009 UTC (14 years, 9 months ago) by root
Branch: MAIN
CVS Tags: rel-0_8, rel-0_9
Log Message:
0.8

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 use AnyEvent::MP::Global;
9
10 initialise_node;
11
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;