Anatomy of a theodolite

The internal structure of a Network Monitoring Tool running on a Theodolite: theo.pl

use strict;
use lib "GlueDomains";
use lib "GlueDomains/rgmacomplete";
use GlueDomains;

# Creates a GlueDomains database handle
my $server="glueserver.cnaf.infn.it";
my $gd=GlueDomains::new($server,"gluedomains","consumer","password2");
# Discover self GlueDomains identifiers (can be repeated for each interface)
my $myself="122.211.112.2";
my @edgeservicelist=EdgeService::getByInterface($gd,$myself);
# More than one identifier may exist to model different QoS
foreach my $t ( @edgeservicelist ) {
# Discover neighbor theodolites
    my @sessionlist=$gd->getTargetList($t);
    while ( my $session = pop @sessionlist ) {
	# initialize measurement session
	# ...
	# Create handles for RGMA producers
	my $networkService=@$session[1];
	my $rgmaRTT=rgmacomplete::RoundTripDelayTools->new($networkService);
	my $rgmaLost=rgmacomplete::RoundTripLossTools->new($networkService);
	while (1) {
	    # Perform a measurement 
	    my @RTTdata=();
	    my @RTLdata=();
	    # Store measurement in R-GMA
	    my $observation;
	    $observation=RoundTripDelay->
		new($networkService->{id},"glueping",@RTTdata);
	    $rgmaRTT->insert($observation);
	    $observation=RoundTripLoss->
		new($networkService->{id},"glueping",@RTLdata);
	    $rgmaLost->insert($observation);
	}
    }
}

Status

Application Scenario (monitoring tool)

up: DataTAG WP4 meeting (29 July 2003)

index