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

# Content
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 my $nick = shift;
10
11 configure;
12
13 $| = 1;
14
15 my $port = port;
16
17 my ($client, $server);
18
19 sub server_connect {
20 my $servernodes = grp_get "eg_chat_server2"
21 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