1 | #!/opt/bin/perl |
1 | #!/opt/bin/perl |
2 | |
2 | |
3 | use common::sense; |
3 | use common::sense; |
4 | use AnyEvent::MP; |
4 | use AnyEvent::MP; |
|
|
5 | use AnyEvent::MP::Global; |
5 | |
6 | |
6 | my ($nick, $servernode) = @ARGV; |
7 | my ($nick, $servernode) = @ARGV; |
7 | |
8 | |
8 | initialise_node "slave/", $servernode; |
9 | initialise_node "slave/", $servernode; |
9 | |
10 | |
10 | $| = 1; |
11 | $| = 1; |
11 | |
12 | |
12 | my $servernode = (resolve_node $servernode)->recv; |
|
|
13 | |
|
|
14 | my $port = port; |
13 | my $port = port; |
15 | |
14 | |
16 | my ($client, $server); |
15 | my ($client, $server); |
17 | |
16 | |
18 | sub server_connect { |
17 | sub server_connect { |
|
|
18 | if (my $servernodes = AnyEvent::MP::Global::find "eg_chat_server") { |
19 | print "\rconnecting...\n"; |
19 | print "\rconnecting...\n"; |
20 | |
20 | |
21 | $client = port { print "\r \r@_\n> " }; |
21 | $client = port { print "\r \r@_\n> " }; |
22 | mon $client, sub { |
22 | mon $client, sub { |
23 | print "\rdisconnected @_\n"; |
23 | print "\rdisconnected @_\n"; |
24 | &server_connect; |
24 | &server_connect; |
25 | }; |
25 | }; |
26 | |
26 | |
27 | $server = spawn $servernode, "::client_connect", $client, $nick; |
27 | $server = spawn $servernodes->[0], "::client_connect", $client, $nick; |
28 | mon $server, $client; |
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 | } |
29 | } |
36 | } |
30 | |
37 | |
31 | server_connect; |
38 | server_connect; |
32 | |
39 | |
33 | my $w = AE::io 0, 0, sub { |
40 | my $w = AE::io 0, 0, sub { |