X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fnas.pm;h=2d17df899789a97b7411c875cc20355386fc4715;hp=13d0fb830d88e1218489daa3b19e3246a6fef818;hb=649ceeca76084d16d22013124bd7f80f053d75c4;hpb=b7e3e996430536fa01e1eab31f5371d862d88674 diff --git a/FS/FS/nas.pm b/FS/FS/nas.pm index 13d0fb830..2d17df899 100644 --- a/FS/FS/nas.pm +++ b/FS/FS/nas.pm @@ -3,7 +3,7 @@ package FS::nas; use strict; use vars qw( @ISA ); use FS::Record qw(qsearchs); #qsearch); -use FS::UID qw( dbh ); #to lock the tables for heartbeat; ugh, MySQL-specific +use FS::UID qw( dbh ); @ISA = qw(FS::Record); @@ -114,7 +114,9 @@ sub check { || $self->ut_text('nas') || $self->ut_ip('nasip') || $self->ut_domain('nasfqdn') - || $self->ut_numbern('last'); + || $self->ut_numbern('last') + || $self->SUPER::check + ; } =item heartbeat TIMESTAMP @@ -126,30 +128,21 @@ Updates the timestamp for this nas sub heartbeat { my($self, $timestamp) = @_; my $dbh = dbh; - my $sth = $dbh->prepare("LOCK TABLES nas WRITE"); - $sth->execute or die $sth->errstr; #die? - my $lock_self = qsearchs('nas', { 'nasnum' => $self->nasnum } ) - or die "can't find own record for $self nasnum ". $self->nasnum; - if ( $timestamp > $lock_self->last ) { - my $new_self = new FS::nas ( { $lock_self->hash } ); - $new_self->last($timestamp); - #is there a reason to? #$self->last($timestamp); - $new_self->replace($lock_self); - }; - $sth = $dbh->prepare("UNLOCK TABLES"); - $sth->execute or die $sth->errstr; #die? + my $sth = + $dbh->prepare("UPDATE nas SET last = ? WHERE nasnum = ? AND last < ?"); + $sth->execute($timestamp, $self->nasnum, $timestamp) or die $sth->errstr; + $self->last($timestamp); } =back =head1 VERSION -$Id: nas.pm,v 1.4 2001-02-21 01:45:37 ivan Exp $ +$Id: nas.pm,v 1.7 2003-08-05 00:20:43 khoff Exp $ =head1 BUGS -The B method is MySQL-specific. Yuck. It's also not quite -perfectly subclassable, which is much less yuck. +heartbeat method uses SQL directly and doesn't update history tables. =head1 SEE ALSO