X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FMsg.pm;h=9a6f8d1f06894cd25d749afc9d2bac8019fd132d;hb=f8de8b2dedec09d040a107af6bb82e31e4667c87;hp=3e30372ff1111bbac4923b6837c5a01618d8d620;hpb=c8a6bc3e45bfbbaad776f4a6f22b3e501c8fc1c9;p=spider.git diff --git a/perl/Msg.pm b/perl/Msg.pm index 3e30372f..9a6f8d1f 100644 --- a/perl/Msg.pm +++ b/perl/Msg.pm @@ -18,11 +18,12 @@ use Mojo::IOLoop; use Mojo::IOLoop::Stream; use DXDebug; -use Timer; +use DXTimer; -use vars qw($now %conns $noconns $cnum $total_in $total_out $connect_timeout $disc_waittime); +use vars qw($now %conns $noconns $cnum $total_in $total_out $total_lines_in $total_lines_out $connect_timeout $disc_waittime); $total_in = $total_out = 0; +$total_lines_in = $total_lines_out = 0; $now = time; @@ -43,15 +44,19 @@ sub new my $class = $obj || $pkg; my $conn = { - rproc => $rproc, - inqueue => [], - outqueue => [], - state => 0, - lineend => "\r\n", - csort => 'telnet', - timeval => 60, - blocking => 0, - cnum => (($cnum < 999) ? (++$cnum) : ($cnum = 1)), + rproc => $rproc, + inqueue => [], + outqueue => [], + state => 0, + lineend => "\r\n", + csort => 'telnet', + timeval => 60, + blocking => 0, + cnum => (($cnum < 999) ? (++$cnum) : ($cnum = 1)), + linesin => 0, + linesout => 0, + datain => 0, + dataout => 0, }; $noconns++; @@ -128,6 +133,7 @@ sub peerhost $conn->{peerhost} ||= $conn->{sock}->handle->peerhost if $conn->{sock}; $conn->{peerhost} ||= 'UNKNOWN'; } + $conn->{peerhost} =~ s/^::ffff://; return $conn->{peerhost}; } @@ -286,7 +292,8 @@ sub disconnect dbg("Buffer empty, just close $call") if $dbg; _close_it($conn); } - } else { + } + else { dbg((ref $conn) . " socket missing on $conn->{call}") if $dbg; _close_it($conn); } @@ -315,7 +322,7 @@ sub _close_it if ($sock) { dbg((ref $conn) . " Connection $conn->{cnum} $call closing gracefully") if isdbg('connll'); - $sock->close_gracefully; + $sock->close_gracefully if $sock->can('close_gracefully'); } # get rid of any references @@ -350,6 +357,9 @@ sub _send_stuff if (defined $sock) { $sock->write($data); $total_out += $lth; + $conn->{dataout} += $lth; + ++$conn->{linesout}; + ++$total_lines_out; } else { dbg("_send_stuff $call ending data ignored: $data"); } @@ -425,6 +435,8 @@ sub dequeue } else { $conn->{msg} = pop @lines; } + $conn->{linesin} += @lines; + $total_lines_in += @lines; for (@lines) { last if $conn->{disconnecting}; &{$conn->{rproc}}($conn, defined $_ ? $_ : ''); @@ -440,8 +452,8 @@ sub _rcv { # Complement to _send return if $conn->{disconnecting}; $total_in += length $msg; + $conn->{datain} += length $msg; - my @lines; if (isdbg('raw')) { my $call = $conn->{call} || 'none'; my $lth = length $msg; @@ -560,7 +572,8 @@ sub DESTROY my $sock = $conn->{sock}; if ($sock) { - $sock->close_gracefully; + $sock->close_gracefully if $sock->can('close_gracefully'); + delete $conn->{sock}; } $noconns--;