blob: fd397d2bc9af6312287a030d50a83cff4c1c092d [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/ui/scenic/lib/scenic/util/error_reporter.h"
namespace scenic_impl {
namespace {
#define LOG_HELPER(severity) FX_LOGS(severity) << error_string;
class DefaultErrorReporter : public ErrorReporter {
public:
void ReportError(fuchsia_logging::LogSeverity severity, std::string error_string) override {
switch (severity) {
case fuchsia_logging::LOG_INFO:
FX_LOGS(INFO) << error_string;
break;
case fuchsia_logging::LOG_WARNING:
FX_LOGS(WARNING) << error_string;
break;
case fuchsia_logging::LOG_ERROR:
FX_LOGS(ERROR) << error_string;
break;
case fuchsia_logging::LOG_FATAL:
FX_LOGS(FATAL) << error_string;
break;
default:
// Invalid severity.
FX_DCHECK(false);
}
}
};
} // anonymous namespace
ErrorReporter::Report::Report(ErrorReporter* owner, fuchsia_logging::LogSeverity severity,
const std::string& prefix)
: owner_(owner), severity_(severity) {
stream_ << prefix;
}
ErrorReporter::Report::Report(Report&& other)
: owner_(other.owner_), severity_(other.severity_), stream_(std::move(other.stream_)) {}
ErrorReporter::Report::~Report() { owner_->ReportError(severity_, stream_.str()); }
const std::shared_ptr<ErrorReporter>& ErrorReporter::Default() {
static const std::shared_ptr<ErrorReporter> kReporter = std::make_shared<DefaultErrorReporter>();
return kReporter;
}
std::unique_ptr<ErrorReporter> ErrorReporter::DefaultUnique() {
return std::make_unique<DefaultErrorReporter>();
}
} // namespace scenic_impl