1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/mirroring/service/mirroring_logger.h"
#include <string>
#include <string_view>
#include "base/strings/strcat.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "components/mirroring/mojom/session_observer.mojom.h"
namespace mirroring {
constexpr char kLogPrefix[] = "mirroring.";
MirroringLogger::MirroringLogger(std::string_view prefix,
mojo::Remote<mojom::SessionObserver>& observer)
: prefix_(prefix),
observer_(observer),
task_runner_(base::SequencedTaskRunner::GetCurrentDefault()) {}
MirroringLogger::~MirroringLogger() = default;
void MirroringLogger::LogInfo(std::string_view message) {
const std::string log_message =
base::StrCat({kLogPrefix, prefix_, ": ", message});
if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE, base::BindOnce(&MirroringLogger::LogInfoInternal,
weak_ptr_factory_.GetWeakPtr(), log_message));
} else {
LogInfoInternal(log_message);
}
}
void MirroringLogger::LogError(std::string_view message) {
const std::string log_message =
base::StrCat({kLogPrefix, prefix_, ": ", message});
if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE, base::BindOnce(&MirroringLogger::LogErrorInternal,
weak_ptr_factory_.GetWeakPtr(), log_message));
} else {
LogErrorInternal(log_message);
}
}
void MirroringLogger::LogError(mojom::SessionError error,
std::string_view message) {
const std::string log_message = base::StrCat(
{kLogPrefix, prefix_, ": SessionError (",
base::NumberToString(static_cast<int>(error)), "), ", message});
if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask(
FROM_HERE, base::BindOnce(&MirroringLogger::LogErrorInternal,
weak_ptr_factory_.GetWeakPtr(), log_message));
} else {
LogErrorInternal(log_message);
}
}
void MirroringLogger::LogInfoInternal(const std::string& message) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DVLOG(1) << message;
if (observer_.get()) {
observer_.get()->LogInfoMessage(message);
}
}
void MirroringLogger::LogErrorInternal(const std::string& message) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
LOG(ERROR) << message;
if (observer_.get()) {
observer_.get()->LogErrorMessage(message);
}
}
} // namespace mirroring
|