#! /usr/bin/perl use strict ; use warnings ; package Probe::Hist ; use base 'Probe' ; # item args : [ default-value ] sub ITEMS { [] } ; sub main { my $self = shift ; my $itms = shift ; # items to probe : [ item, ... ] my $clnt = shift ; # main::CLIENT my $hist = $clnt -> hist ; return unless $hist ; for my $item ( @$itms ) { my $inam = $item -> name ; my $hnam = $item -> hnam ; my $tnam = $hist -> tnam ( $hnam ) ; my $def = $item -> args -> [ 0 ] ; my $val = $clnt -> vals -> del_val ( $hnam, $inam ) ; OBB::TT ( " col %s.%s def %s", $tnam, $inam, $def ) ; if ( defined $val ) { OBB::TT ( " found val %s for %s:%s", $val, $hnam, $inam ) ; $item -> set_val ( $val ) ; } elsif ( ! defined $def ) { OBB::TT ( " default %s:%s not defined", $hnam, $inam ) ; } elsif ( ! $hist -> has_tab ( $tnam ) ) { OBB::TT ( " no tab %s", $tnam ) ; } elsif ( ! $hist -> has_col ( $tnam, $inam ) ) { OBB::TT ( " no col %s.%s", $tnam, $inam ) ; } else { my $tup = $hist -> select1 ( $tnam , cols => [ 'TIME', $inam ] , order_by => 'TIME DESC' , limit => 1 ) ; if ( defined $tup ) { my ( $TIME, $val ) = @$tup ; if ( defined $val ) { $item -> set_val ( $val ) ; } else { $item -> set_val ( $def ) ; } } } } } 1 ;