ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/eg/chat_client
Revision: 1.6
Committed: Mon Aug 17 03:50:28 2009 UTC (17 years, 1 month ago) by root
Branch: MAIN
Changes since 1.5: +18 -11 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.2 #!/opt/bin/perl
2    
3 root 1.4 use common::sense;
4 elmex 1.1 use AnyEvent::MP;
5 root 1.6 use AnyEvent::MP::Global;
6 elmex 1.1
7 root 1.4 my ($nick, $servernode) = @ARGV;
8 elmex 1.1
9 root 1.4 initialise_node "slave/", $servernode;
10 elmex 1.3
11 root 1.4 $| = 1;
12 elmex 1.3
13 root 1.4 my $port = port;
14 elmex 1.1
15 root 1.4 my ($client, $server);
16 elmex 1.1
17 root 1.4 sub server_connect {
18 root 1.6 if (my $servernodes = AnyEvent::MP::Global::find "eg_chat_server") {
19     print "\rconnecting...\n";
20 elmex 1.1
21 root 1.6 $client = port { print "\r \r@_\n> " };
22     mon $client, sub {
23     print "\rdisconnected @_\n";
24     &server_connect;
25     };
26    
27     $server = spawn $servernodes->[0], "::client_connect", $client, $nick;
28     mon $server, $client;
29     } else {
30     print "\rno registered server found, retrying in 1s...\n";
31     my $t; $t = AE::timer 1, 0, sub {
32     undef $t;
33     &server_connect;
34     };
35     }
36 root 1.4 }
37 elmex 1.1
38 root 1.4 server_connect;
39 elmex 1.1
40 root 1.4 my $w = AE::io 0, 0, sub {
41     chomp (my $line = <STDIN>);
42     print "> ";
43     snd $server, $line;
44 root 1.2 };
45 elmex 1.1
46 root 1.4 print "> ";
47     AE::cv->recv;
48 elmex 1.1