ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_client2
Revision: 1.6
Committed: Wed Mar 21 01:14:12 2012 UTC (12 years, 2 months ago) by root
Branch: MAIN
Changes since 1.5: +0 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #!/opt/bin/perl
2    
3     # Usage: ./chat_client nickname optional-servernode
4     # implement a chat client using "bridge-head" methodology.
5    
6     use common::sense;
7     use AnyEvent::MP;
8    
9 root 1.2 my $nick = shift;
10 root 1.1
11 root 1.4 configure;
12 root 1.1
13     $| = 1;
14    
15     my $port = port;
16    
17     my ($client, $server);
18    
19     sub server_connect {
20 root 1.5 my $servernodes = grp_get "eg_chat_server2"
21 root 1.1 or return after 1, \&server_connect;
22    
23     print "\rconnecting...\n";
24    
25     $client = port { print "\r \r@_\n> " };
26     mon $client, sub {
27     print "\rdisconnected @_\n";
28     &server_connect;
29     };
30    
31     $server = spawn $servernodes->[0], "::client_connect", $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, $line
41     if $server;
42     };
43    
44     print "> ";
45     AE::cv->recv;
46