AC-Yenta
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/AC/Yenta/NetMon.pm view on Meta::CPAN
# -*- perl -*-
# Copyright (c) 2013
# Author: Jeff Weisberg <jaw @ solvemedia.com>
# Created: 2013-Mar-19 11:39 (EDT)
# Function: keep track of each network's status
#
# $Id$
package AC::Yenta::NetMon;
use AC::Yenta::MySelf;
use Socket;
use strict;
my $STALE = 120;
my %lastok; # natdom => T
my %natdom; # ip => natdom
sub init {
my $natinfo = my_network_info();
for my $n ( @$natinfo ){
my $dom = $n->{natdom} || 'public';
$natdom{ $n->{ipa} } = $dom;
$lastok{ $dom } = $^T; # assume everything is working
}
}
sub update {
my $io = shift;
my $ip = inet_ntoa( (sockaddr_in(getsockname($io->{fd})))[1] );
my $dom = $natdom{ $ip } || 'public';
$lastok{$dom} = $^T;
}
sub status_dom {
my $dom = shift;
$dom ||= 'public';
return unless exists $lastok{$dom}; # not local
return ($lastok{$dom || 'public'} + $STALE < $^T) ? 0 : 200;
}
1;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.588 second using v1.00-cache-2.02-grep-82fe00e-cpan-2c419f77a38b )