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 (14 years, 9 months ago) by root
Branch: MAIN
Changes since 1.5: +18 -11 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 #!/opt/bin/perl
2
3 use common::sense;
4 use AnyEvent::MP;
5 use AnyEvent::MP::Global;
6
7 my ($nick, $servernode) = @ARGV;
8
9 initialise_node "slave/", $servernode;
10
11 $| = 1;
12
13 my $port = port;
14
15 my ($client, $server);
16
17 sub server_connect {
18 if (my $servernodes = AnyEvent::MP::Global::find "eg_chat_server") {
19 print "\rconnecting...\n";
20
21 $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 }
37
38 server_connect;
39
40 my $w = AE::io 0, 0, sub {
41 chomp (my $line = <STDIN>);
42 print "> ";
43 snd $server, $line;
44 };
45
46 print "> ";
47 AE::cv->recv;
48