X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fclient.pl;h=c5b4bbec805e2ef04a8ae01c081286e1b5eb46b1;hb=07ea293f3919d2da76220b5fbc55b734008ed44c;hp=b2dcfa3a7223d4cebba279b334de3e66a7525d64;hpb=f46017e7bef9ee062cd5a8648d214eabe585da25;p=spider.git diff --git a/perl/client.pl b/perl/client.pl index b2dcfa3a..c5b4bbec 100755 --- a/perl/client.pl +++ b/perl/client.pl @@ -20,11 +20,12 @@ BEGIN { use Msg; use DXVars; -$mode = 1; # 1 - \n = \r as EOL, 2 - \n = \n, 0 - transparent +$mode = 2; # 1 - \n = \r as EOL, 2 - \n = \n, 0 - transparent $call = ""; # the callsign being used @stdoutq = (); # the queue of stuff to send out to the user $conn = 0; # the connection object for the cluster $lastbit = ""; # the last bit of an incomplete input line +$mynl = "\n"; # standard terminator # cease communications sub cease @@ -45,16 +46,11 @@ sub sig_term sub setmode { if ($mode == 1) { - $nl = "\r"; + $mynl = "\r"; } else { - $nl = "\n"; - } - $/ = $nl; - if ($mode == 0) { - $\ = undef; - } else { - $\ = $nl; + $mynl = "\n"; } + $/ = $mynl; } # handle incoming messages @@ -68,9 +64,12 @@ sub rec_socket my ($sort, $call, $line) = $msg =~ /^(\w)(\S+)\|(.*)$/; if ($sort eq 'D') { - $nl = "" if $mode == 0; + my $snl = $mynl; + $snl = "" if $mode == 0; + $snl = ' ' if ($mode && $line =~ />$/); $line =~ s/\n/\r/og if $mode == 1; - print $line; + #my $p = qq($line$snl); + print $line, $snl; } elsif ($sort eq 'M') { $mode = $line; # set new mode from cluster setmode(); @@ -115,12 +114,13 @@ sub rec_stdin } } -$call = uc $ARGV[0]; -die "client.pl []\r\n" if (!$call); -$mode = $ARGV[1] if (@ARGV > 1); +$call = uc shift @ARGV; +$call = uc $mycall if !$call; +$connsort = lc shift @ARGV; +$connsort = 'local' if !$connsort; +$mode = ($connsort =~ /^ax/o) ? 1 : 2; setmode(); - #select STDOUT; $| = 1; STDOUT->autoflush(1); @@ -129,7 +129,18 @@ $SIG{'TERM'} = \&sig_term; $SIG{'HUP'} = \&sig_term; $conn = Msg->connect("$clusteraddr", $clusterport, \&rec_socket); -$conn->send_now("A$call|start"); +$conn->send_now("A$call|$connsort"); Msg->set_event_handler(\*STDIN, "read" => \&rec_stdin); -Msg->event_loop(); + +$lasttime = time; +for (;;) { + my $t; + Msg->event_loop(1, 0.010); + $t = time; + if (t > $lasttime+660 && $connsort =~ /^ax/o) { # every e + print pack('xx'); + STDOUT->fflush(); + $lasttime = $t; + } +}