ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_client
Revision: 1.13
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.12: +15 -13 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
9 my $nick = shift || "anonymous";
10
11 configure;
12
13 $| = 1;
14
15 my ($client, $server);
16
17 sub server_connect {
18 my $db_mon; $db_mon = db_mon eg_chat_server => sub {
19 return unless %{ $_[0] };
20 undef $db_mon;
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 = (keys %{ $_[0] })[0];
31
32 snd $server, join => $client, $nick;
33 mon $server, $client;
34 };
35 }
36
37 server_connect;
38
39 my $w = AE::io 0, 0, sub {
40 chomp (my $line = <STDIN>);
41 print "> ";
42 snd $server, privmsg => $nick, $line
43 if $server;
44 };
45
46 print "> ";
47 AE::cv->recv;
48