diff --git a/opentrafficshaper/plugins/statistics/statistics.pm b/opentrafficshaper/plugins/statistics/statistics.pm index 9d357a7505513ca6444827cd6a294b2c213022f8..3f2fe80a9ce6d3b9cbcc0813034c7afe5567722b 100644 --- a/opentrafficshaper/plugins/statistics/statistics.pm +++ b/opentrafficshaper/plugins/statistics/statistics.pm @@ -639,55 +639,55 @@ sub getLastStats } -# Return stats based on a LID -sub getStatsByLID +# Return stats by SID +sub getStatsBySID { - my $lid = shift; + my $sid = shift; + return _getStatsBySID($sid); +} - # Max entries - my $entriesLeft = 100; - # Grab stats ID from LID - my $sid = getSIDFromLID($lid); - if (!defined($sid)) { - return { }; - } +# Return basic stats by SID +sub getStatsBasicBySID +{ + my $sid = shift; - return _getStatsBySID($sid); + return _getStatsBasicBySID($sid); } -# Return stats based on an interface -sub getStatsByClass +# Get the stats ID from Class ID +sub getSIDFromCID { my ($iface,$cid) = @_; - # Grab stats ID from LID - my $sid = getSIDFromCID($iface,$cid); - if (!defined($sid)) { - return { }; - } - - return _getStatsBySID($sid); + my $identifier = "Class:$iface:$cid"; + return _getSIDFromIdentifier($identifier); } -# Get the stats ID from Class ID -sub getSIDFromCID +# Set the stats ID from Class ID +sub setSIDFromCID { my ($iface,$cid) = @_; + my $identifier = "Class:$iface:$cid"; - return _getSIDFromIdentifier($identifier); + my $sid = _getSIDFromIdentifier($identifier); + if (!defined($sid)) { + $sid = _setSIDFromIdentifier($identifier); + } + return $sid; } # Get the stats ID from a LID sub getSIDFromLID { - my ($lid) = @_; + my $lid = shift; + if (defined(my $username = getLimitUsername($lid))) { my $identifier = "Username:$username"; @@ -698,6 +698,51 @@ sub getSIDFromLID } +# Set the stats ID from a LID +sub setSIDFromLID +{ + my $lid = shift; + + + if (defined(my $username = getLimitUsername($lid))) { + my $identifier = "Username:$username"; + my $sid = _getSIDFromIdentifier($identifier); + if (!defined($sid)) { + $sid = _setSIDFromIdentifier($identifier); + } + return $sid; + } + + return undef; +} + + +# Get the stats ID from a counter +sub getSIDFromCounter +{ + my $counter = shift; + + + my $identifier = "Counter:$counter"; + return _getSIDFromIdentifier($identifier); +} + + +# Set the stats ID from a counter +sub setSIDFromCounter +{ + my $counter = shift; + + + my $identifier = "Counter:$counter"; + my $sid = _getSIDFromIdentifier($identifier); + if (!defined($sid)) { + $sid = _setSIDFromIdentifier($identifier); + } + return $sid; +} + + # Return traffic direction sub getTrafficDirection { @@ -847,13 +892,26 @@ sub _getSIDFromIdentifier warn "FAILED TO EXECUTE GETUSER: ".$identifierGetSTH->errstr; } + return undef; +} + + +# Set SID from identifier in DB +sub _setSIDFromIdentifier +{ + my $identifier = shift; + + # Try add it to the DB my $identifierAddSTH = $statsPreparedStatements->{'identifier_add'}; if (my $res = $identifierAddSTH->execute($identifier)) { return $statsDBIdentifierMap->{$identifier} = $dbh->last_insert_id("","","",""); } else { +# FIXME warn "DB ADD IDENTIFIER ERROR: ".$identifierAddSTH->errstr; } + + return undef; }