do non blocking connects
[spider.git] / perl / console.pl
index 4d7040cf2374f9c97b58b76dd9484be131afbd9d..aee1bc9ba485253b28b67eba16885602473fc25d 100755 (executable)
@@ -26,6 +26,7 @@ BEGIN {
 }
 
 use Msg;
+use IntMsg;
 use DXVars;
 use DXDebug;
 use DXUtil;
@@ -103,9 +104,7 @@ sub do_resize
 sub cease
 {
        my $sendz = shift;
-#      if ($conn && $sendz) {
-#              $conn->send_now("Z$call|bye...");
-#      }
+       $conn->disconnect if $conn;
        endwin();
        dbgclose();
        print @_ if @_;
@@ -422,7 +421,7 @@ if ($call eq $mycall) {
        exit(0);
 }
 
-$conn = Msg->connect("$clusteraddr", $clusterport, \&rec_socket);
+$conn = IntMsg->connect("$clusteraddr", $clusterport, \&rec_socket);
 if (! $conn) {
        if (-r "$data/offline") {
                open IN, "$data/offline" or die;
@@ -436,9 +435,14 @@ if (! $conn) {
        exit(0);
 }
 
+$conn->set_error(sub{cease(0)});
+
+
+unless ($DB::VERSION) {
+       $SIG{'INT'} = \&sig_term;
+       $SIG{'TERM'} = \&sig_term;
+}
 
-$SIG{'INT'} = \&sig_term;
-$SIG{'TERM'} = \&sig_term;
 #$SIG{'WINCH'} = \&do_resize;
 $SIG{'HUP'} = \&sig_term;
 
@@ -455,7 +459,7 @@ Msg->set_event_handler(\*STDIN, "read" => \&rec_stdin);
 my $lastmin = 0;
 for (;;) {
        my $t;
-       Msg->event_loop(1, 1);
+       Msg->event_loop(1, 0.1);
        $t = time;
        if ($t > $lasttime) {
                my ($min)= (gmtime($t))[1];