ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_server
(Generate patch)

Comparing AnyEvent-MP/eg/chat_server (file contents):
Revision 1.6 by root, Mon Aug 17 03:50:28 2009 UTC vs.
Revision 1.7 by root, Wed Aug 19 05:57:15 2009 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines