ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_client
Revision: 1.9
Committed: Thu Aug 27 22:21:09 2009 UTC (14 years, 9 months ago) by root
Branch: MAIN
CVS Tags: rel-0_9
Changes since 1.8: +2 -2 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 initialise_node "anon/";
13
14 $| = 1;
15
16 my $port = port;
17
18 my ($client, $server);
19
20 sub server_connect {
21 my $servernodes = AnyEvent::MP::Global::find "eg_chat_server"
22 or return after 1, \&server_connect;
23
24 print "\rconnecting...\n";
25
26 $server = $servernodes->[0];
27
28 $client = port { print "\r \r@_\n> " };
29 mon $client, sub {
30 print "\rdisconnected @_\n";
31 &server_connect;
32 };
33
34 snd $server, join => $client, $nick;
35 mon $server, $client;
36 }
37
38 server_connect;
39
40 my $w = AE::io 0, 0, sub {
41 chomp (my $line = <STDIN>);
42 print "> ";
43 snd $server, privmsg => $nick, $line
44 if $server;
45 };
46
47 print "> ";
48 AE::cv->recv;
49