ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_client
Revision: 1.12
Committed: Sat Sep 5 21:16:59 2009 UTC (14 years, 8 months ago) by root
Branch: MAIN
CVS Tags: rel-1_30, rel-1_1, rel-1_2, rel-1_28, rel-1_29, rel-1_24, rel-1_26, rel-1_27, rel-1_21, rel-1_22, rel-1_23
Changes since 1.11: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 #!/opt/bin/perl
2
3 # Usage: ./chat_client nickname optional-servername
4 # implement a chat client using "traditional message passing"
5
6 use common::sense;
7 use AnyEvent::MP;
8 use AnyEvent::MP::Global;
9
10 my $nick = shift;
11
12 configure;
13
14 $| = 1;
15
16 my ($client, $server);
17
18 sub server_connect {
19 my $servernodes = grp_get "eg_chat_server"
20 or return after 1, \&server_connect;
21
22 print "\rconnecting...\n";
23
24 $client = port { print "\r \r@_\n> " };
25 mon $client, sub {
26 print "\rdisconnected @_\n";
27 &server_connect;
28 };
29
30 $server = $servernodes->[0];
31 snd $server, join => $client, $nick;
32 mon $server, $client;
33 }
34
35 server_connect;
36
37 my $w = AE::io 0, 0, sub {
38 chomp (my $line = <STDIN>);
39 print "> ";
40 snd $server, privmsg => $nick, $line
41 if $server;
42 };
43
44 print "> ";
45 AE::cv->recv;
46