mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00
Adopt absl::string_view in rtc_base/log_sinks
This is part of a large scale effort to increase adoption of absl::string_view across the WebRTC code base. This CL adds absl::string_view versions of the OnLogMessage functions in rtc::LogSink. The const std::string& versions are kept for now since downstream clients use subclasses of LogSink and need to be migrated before these are removed. Bug: webrtc:13579 Change-Id: I57bb72ad503805ff0ca16f1d7aece2d44c65cb73 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/253980 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Xavier Lepaul <xalep@webrtc.org> Owners-Override: Xavier Lepaul <xalep@webrtc.org> Commit-Queue: Ali Tofigh <alito@webrtc.org> Cr-Commit-Position: refs/heads/main@{#36189}
This commit is contained in:
parent
9848890590
commit
6364d0899e
16 changed files with 118 additions and 24 deletions
|
@ -506,6 +506,7 @@ if (rtc_include_tests) {
|
|||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/container:inlined_vector",
|
||||
"//third_party/abseil-cpp/absl/memory",
|
||||
"//third_party/abseil-cpp/absl/strings",
|
||||
"//third_party/abseil-cpp/absl/types:optional",
|
||||
"//third_party/abseil-cpp/absl/types:variant",
|
||||
]
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "api/test/create_frame_generator.h"
|
||||
#include "call/call.h"
|
||||
#include "call/fake_network_pipe.h"
|
||||
|
@ -50,13 +51,17 @@ class LogObserver {
|
|||
class Callback : public rtc::LogSink {
|
||||
public:
|
||||
void OnLogMessage(const std::string& message) override {
|
||||
OnLogMessage(absl::string_view(message));
|
||||
}
|
||||
|
||||
void OnLogMessage(absl::string_view message) override {
|
||||
MutexLock lock(&mutex_);
|
||||
// Ignore log lines that are due to missing AST extensions, these are
|
||||
// logged when we switch back from AST to TOF until the wrapping bitrate
|
||||
// estimator gives up on using AST.
|
||||
if (message.find("BitrateEstimator") != std::string::npos &&
|
||||
message.find("packet is missing") == std::string::npos) {
|
||||
received_log_lines_.push_back(message);
|
||||
if (message.find("BitrateEstimator") != absl::string_view::npos &&
|
||||
message.find("packet is missing") == absl::string_view::npos) {
|
||||
received_log_lines_.push_back(std::string(message));
|
||||
}
|
||||
|
||||
int num_popped = 0;
|
||||
|
@ -66,7 +71,7 @@ class LogObserver {
|
|||
received_log_lines_.pop_front();
|
||||
expected_log_lines_.pop_front();
|
||||
num_popped++;
|
||||
EXPECT_TRUE(a.find(b) != std::string::npos) << a << " != " << b;
|
||||
EXPECT_TRUE(a.find(b) != absl::string_view::npos) << a << " != " << b;
|
||||
}
|
||||
if (expected_log_lines_.empty()) {
|
||||
if (num_popped > 0) {
|
||||
|
|
|
@ -1422,6 +1422,7 @@ if (rtc_include_tests) {
|
|||
"//third_party/abseil-cpp/absl/base:core_headers",
|
||||
"//third_party/abseil-cpp/absl/memory",
|
||||
"//third_party/abseil-cpp/absl/numeric:bits",
|
||||
"//third_party/abseil-cpp/absl/strings",
|
||||
"//third_party/abseil-cpp/absl/types:optional",
|
||||
]
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <cstdio>
|
||||
#include <string>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "rtc_base/checks.h"
|
||||
|
||||
namespace rtc {
|
||||
|
@ -36,14 +37,18 @@ FileRotatingLogSink::FileRotatingLogSink(FileRotatingStream* stream)
|
|||
FileRotatingLogSink::~FileRotatingLogSink() {}
|
||||
|
||||
void FileRotatingLogSink::OnLogMessage(const std::string& message) {
|
||||
OnLogMessage(absl::string_view(message));
|
||||
}
|
||||
|
||||
void FileRotatingLogSink::OnLogMessage(absl::string_view message) {
|
||||
if (!stream_->IsOpen()) {
|
||||
std::fprintf(stderr, "Init() must be called before adding this sink.\n");
|
||||
return;
|
||||
}
|
||||
stream_->Write(message.c_str(), message.size());
|
||||
stream_->Write(message.data(), message.size());
|
||||
}
|
||||
|
||||
void FileRotatingLogSink::OnLogMessage(const std::string& message,
|
||||
void FileRotatingLogSink::OnLogMessage(absl::string_view message,
|
||||
LoggingSeverity sev,
|
||||
const char* tag) {
|
||||
if (!stream_->IsOpen()) {
|
||||
|
@ -52,7 +57,7 @@ void FileRotatingLogSink::OnLogMessage(const std::string& message,
|
|||
}
|
||||
stream_->Write(tag, strlen(tag));
|
||||
stream_->Write(": ", 2);
|
||||
stream_->Write(message.c_str(), message.size());
|
||||
stream_->Write(message.data(), message.size());
|
||||
}
|
||||
|
||||
bool FileRotatingLogSink::Init() {
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "rtc_base/file_rotating_stream.h"
|
||||
#include "rtc_base/logging.h"
|
||||
|
||||
|
@ -39,7 +40,8 @@ class FileRotatingLogSink : public LogSink {
|
|||
// Writes the message to the current file. It will spill over to the next
|
||||
// file if needed.
|
||||
void OnLogMessage(const std::string& message) override;
|
||||
void OnLogMessage(const std::string& message,
|
||||
void OnLogMessage(absl::string_view message) override;
|
||||
void OnLogMessage(absl::string_view message,
|
||||
LoggingSeverity sev,
|
||||
const char* tag) override;
|
||||
|
||||
|
|
|
@ -42,6 +42,7 @@ static const int kMaxLogLineSize = 1024 - 60;
|
|||
#include <vector>
|
||||
|
||||
#include "absl/base/attributes.h"
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/platform_thread_types.h"
|
||||
#include "rtc_base/string_encode.h"
|
||||
|
@ -563,4 +564,20 @@ void LogSink::OnLogMessage(const std::string& msg,
|
|||
LoggingSeverity /* severity */) {
|
||||
OnLogMessage(msg);
|
||||
}
|
||||
|
||||
// Inefficient default implementation, override is recommended.
|
||||
void LogSink::OnLogMessage(absl::string_view msg,
|
||||
LoggingSeverity severity,
|
||||
const char* tag) {
|
||||
OnLogMessage(tag + (": " + std::string(msg)), severity);
|
||||
}
|
||||
|
||||
void LogSink::OnLogMessage(absl::string_view msg,
|
||||
LoggingSeverity /* severity */) {
|
||||
OnLogMessage(msg);
|
||||
}
|
||||
|
||||
void LogSink::OnLogMessage(absl::string_view msg) {
|
||||
OnLogMessage(std::string(msg));
|
||||
}
|
||||
} // namespace rtc
|
||||
|
|
|
@ -112,6 +112,13 @@ class LogSink {
|
|||
LoggingSeverity severity);
|
||||
virtual void OnLogMessage(const std::string& message) = 0;
|
||||
|
||||
virtual void OnLogMessage(absl::string_view msg,
|
||||
LoggingSeverity severity,
|
||||
const char* tag);
|
||||
virtual void OnLogMessage(absl::string_view message,
|
||||
LoggingSeverity severity);
|
||||
virtual void OnLogMessage(absl::string_view message);
|
||||
|
||||
private:
|
||||
friend class ::rtc::LogMessage;
|
||||
#if RTC_LOG_ENABLED()
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include <algorithm>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "rtc_base/arraysize.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/event.h"
|
||||
|
@ -34,7 +35,10 @@ class LogSinkImpl : public LogSink {
|
|||
|
||||
private:
|
||||
void OnLogMessage(const std::string& message) override {
|
||||
log_data_->append(message);
|
||||
OnLogMessage(absl::string_view(message));
|
||||
}
|
||||
void OnLogMessage(absl::string_view message) override {
|
||||
log_data_->append(message.begin(), message.end());
|
||||
}
|
||||
std::string* const log_data_;
|
||||
};
|
||||
|
|
|
@ -149,6 +149,8 @@ if (is_ios || is_mac) {
|
|||
"../rtc_base:checks",
|
||||
]
|
||||
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
||||
|
||||
frameworks = [
|
||||
"AVFoundation.framework",
|
||||
"CoreMedia.framework",
|
||||
|
@ -180,6 +182,7 @@ if (is_ios || is_mac) {
|
|||
|
||||
deps = [
|
||||
":base_objc",
|
||||
":helpers_objc",
|
||||
"../rtc_base",
|
||||
"../rtc_base:checks",
|
||||
"../rtc_base:logging",
|
||||
|
@ -189,6 +192,8 @@ if (is_ios || is_mac) {
|
|||
"..:common_objc",
|
||||
":used_from_extension",
|
||||
]
|
||||
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
||||
}
|
||||
|
||||
rtc_library("file_logger_objc") {
|
||||
|
|
|
@ -1137,6 +1137,8 @@ if (current_os == "linux" || is_android) {
|
|||
":native_api_jni",
|
||||
"../../rtc_base",
|
||||
]
|
||||
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
||||
}
|
||||
|
||||
rtc_library("audio_device_module_base") {
|
||||
|
@ -1620,7 +1622,10 @@ if (is_android) {
|
|||
"../../test:test_support",
|
||||
"../../testing/gtest",
|
||||
]
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
|
||||
absl_deps = [
|
||||
"//third_party/abseil-cpp/absl/memory",
|
||||
"//third_party/abseil-cpp/absl/strings",
|
||||
]
|
||||
}
|
||||
|
||||
rtc_android_library("native_unittests_java") {
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "rtc_base/event.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/platform_thread.h"
|
||||
|
@ -201,6 +202,9 @@ class LookoutLogSink final : public rtc::LogSink {
|
|||
explicit LookoutLogSink(std::string look_for)
|
||||
: look_for_(std::move(look_for)) {}
|
||||
void OnLogMessage(const std::string& message) override {
|
||||
OnLogMessage(absl::string_view(message));
|
||||
}
|
||||
void OnLogMessage(absl::string_view message) override {
|
||||
if (message.find(look_for_) != std::string::npos) {
|
||||
when_found_.Set();
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
*/
|
||||
#include "sdk/android/src/jni/logging/log_sink.h"
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "sdk/android/generated_logging_jni/JNILogging_jni.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
@ -18,18 +19,24 @@ JNILogSink::JNILogSink(JNIEnv* env, const JavaRef<jobject>& j_logging)
|
|||
: j_logging_(env, j_logging) {}
|
||||
JNILogSink::~JNILogSink() = default;
|
||||
|
||||
void JNILogSink::OnLogMessage(const std::string& msg,
|
||||
rtc::LoggingSeverity severity,
|
||||
const char* tag) {
|
||||
JNIEnv* env = AttachCurrentThreadIfNeeded();
|
||||
Java_JNILogging_logToInjectable(env, j_logging_, NativeToJavaString(env, msg),
|
||||
NativeToJavaInteger(env, severity),
|
||||
NativeToJavaString(env, tag));
|
||||
}
|
||||
|
||||
void JNILogSink::OnLogMessage(const std::string& msg) {
|
||||
RTC_DCHECK_NOTREACHED();
|
||||
}
|
||||
|
||||
void JNILogSink::OnLogMessage(const std::string& msg,
|
||||
rtc::LoggingSeverity severity,
|
||||
const char* tag) {
|
||||
OnLogMessage(absl::string_view{msg}, severity, tag);
|
||||
}
|
||||
|
||||
void JNILogSink::OnLogMessage(absl::string_view msg,
|
||||
rtc::LoggingSeverity severity,
|
||||
const char* tag) {
|
||||
JNIEnv* env = AttachCurrentThreadIfNeeded();
|
||||
Java_JNILogging_logToInjectable(
|
||||
env, j_logging_, NativeToJavaString(env, std::string(msg)),
|
||||
NativeToJavaInteger(env, severity), NativeToJavaString(env, tag));
|
||||
}
|
||||
|
||||
} // namespace jni
|
||||
} // namespace webrtc
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
#include <string>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "sdk/android/native_api/jni/java_types.h"
|
||||
#include "sdk/android/src/jni/jni_helpers.h"
|
||||
|
@ -24,10 +25,13 @@ class JNILogSink : public rtc::LogSink {
|
|||
JNILogSink(JNIEnv* env, const JavaRef<jobject>& j_logging);
|
||||
~JNILogSink() override;
|
||||
|
||||
void OnLogMessage(const std::string& msg) override;
|
||||
void OnLogMessage(const std::string& msg,
|
||||
rtc::LoggingSeverity severity,
|
||||
const char* tag) override;
|
||||
void OnLogMessage(const std::string& msg) override;
|
||||
void OnLogMessage(absl::string_view msg,
|
||||
rtc::LoggingSeverity severity,
|
||||
const char* tag) override;
|
||||
|
||||
private:
|
||||
const ScopedJavaGlobalRef<jobject> j_logging_;
|
||||
|
|
|
@ -10,8 +10,11 @@
|
|||
|
||||
#import "RTCCallbackLogger.h"
|
||||
|
||||
#import "helpers/NSString+StdString.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
#include "rtc_base/checks.h"
|
||||
#include "rtc_base/log_sinks.h"
|
||||
#include "rtc_base/logging.h"
|
||||
|
@ -21,9 +24,13 @@ class CallbackLogSink : public rtc::LogSink {
|
|||
CallbackLogSink(RTCCallbackLoggerMessageHandler callbackHandler)
|
||||
: callback_handler_(callbackHandler) {}
|
||||
|
||||
void OnLogMessage(const std::string &message) override {
|
||||
void OnLogMessage(const std::string& message) override {
|
||||
OnLogMessage(absl::string_view(message));
|
||||
}
|
||||
|
||||
void OnLogMessage(absl::string_view message) override {
|
||||
if (callback_handler_) {
|
||||
callback_handler_([NSString stringWithUTF8String:message.c_str()]);
|
||||
callback_handler_([NSString stringForAbslStringView:message]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,10 +45,10 @@ class CallbackWithSeverityLogSink : public rtc::LogSink {
|
|||
|
||||
void OnLogMessage(const std::string& message) override { RTC_DCHECK_NOTREACHED(); }
|
||||
|
||||
void OnLogMessage(const std::string& message, rtc::LoggingSeverity severity) override {
|
||||
void OnLogMessage(absl::string_view message, rtc::LoggingSeverity severity) override {
|
||||
if (callback_handler_) {
|
||||
RTCLoggingSeverity loggingSeverity = NativeSeverityToObjcSeverity(severity);
|
||||
callback_handler_([NSString stringWithUTF8String:message.c_str()], loggingSeverity);
|
||||
callback_handler_([NSString stringForAbslStringView:message], loggingSeverity);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
|
||||
#include <string>
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSString (StdString)
|
||||
|
@ -23,4 +25,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|||
|
||||
@end
|
||||
|
||||
@interface NSString (AbslStringView)
|
||||
|
||||
+ (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
|
|
@ -10,6 +10,8 @@
|
|||
|
||||
#import "NSString+StdString.h"
|
||||
|
||||
#include "absl/strings/string_view.h"
|
||||
|
||||
@implementation NSString (StdString)
|
||||
|
||||
- (std::string)stdString {
|
||||
|
@ -31,3 +33,13 @@
|
|||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation NSString (AbslStringView)
|
||||
|
||||
+ (NSString *)stringForAbslStringView:(const absl::string_view)abslStringView {
|
||||
return [[NSString alloc] initWithBytes:abslStringView.data()
|
||||
length:abslStringView.length()
|
||||
encoding:NSUTF8StringEncoding];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
Loading…
Reference in a new issue