blob: 3ddd76108bc38d10cdbfdec9a351adec03ba082f [file]
// Copyright 2006-2009 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========================================================================
//
//
#include "formatter.h"
namespace stats_report {
Formatter::Formatter(const char *name, uint32 measurement_secs) {
output_ << name << "&" << measurement_secs;
}
Formatter::~Formatter() {
}
void Formatter::AddCount(const char *name, uint64 value) {
output_ << "&" << name << ":c=" << value;
}
void Formatter::AddTiming(const char *name, uint64 num, uint64 avg,
uint64 min, uint64 max) {
output_ << "&" << name << ":t=" << num << ";"
<< avg << ";" << min << ";" << max;
}
void Formatter::AddInteger(const char *name, uint64 value) {
output_ << "&" << name << ":i=" << value;
}
void Formatter::AddBoolean(const char *name, bool value) {
output_ << "&" << name << ":b=" << (value ? "t" : "f");
}
void Formatter::AddMetric(MetricBase *metric) {
switch (metric->type()) {
case kCountType: {
CountMetric &count = metric->AsCount();
AddCount(count.name(), count.value());
}
break;
case kTimingType: {
TimingMetric &timing = metric->AsTiming();
AddTiming(timing.name(), timing.count(), timing.average(),
timing.minimum(), timing.maximum());
}
break;
case kIntegerType: {
IntegerMetric &integer = metric->AsInteger();
AddInteger(integer.name(), integer.value());
}
break;
case kBoolType: {
BoolMetric &boolean = metric->AsBool();
// TODO(omaha): boolean.value() returns a TristateBoolValue. The
// formatter is going to serialize kBoolUnset to true.
DCHECK_NE(boolean.value(), BoolMetric::kBoolUnset);
AddBoolean(boolean.name(), boolean.value() != BoolMetric::kBoolFalse);
}
break;
default:
DCHECK(false && "Impossible metric type");
}
}
} // namespace stats_report