Create TraceLogging Framework
Changes based on Design Doc: https://docs.google.com/document/d/1pmZXIULMzDIuQJAQaJg0-rKrJ-eJlTYf7TRZYCBNXmo/edit?usp=sharing
- Create new TraceLogging Framework
- Define Macros for improved perf
- Define interface for platform-specific code
- Add example interface implementation to be used in standalone mode
- Create UTs for above
- Integrate TraceLogging infra with existing TaskRunner and Informational Logging infras
Change-Id: I728b5742116468c48ffc999144c3d339d2547795
Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/1612337
Commit-Queue: Ryan Keane <rwkeane@google.com>
Reviewed-by: Yuri Wiitala <miu@chromium.org>
Reviewed-by: Max Yakimakha <yakimakha@chromium.org>
Reviewed-by: mark a. foltz <mfoltz@chromium.org>
diff --git a/platform/impl/task_runner.cc b/platform/impl/task_runner.cc
index 89886dc..651e1fe 100644
--- a/platform/impl/task_runner.cc
+++ b/platform/impl/task_runner.cc
@@ -9,6 +9,14 @@
namespace openscreen {
namespace platform {
+TaskRunnerImpl::TaskWithMetadata::TaskWithMetadata(Task task)
+ : task_(std::move(task)), trace_ids_(TRACE_HIERARCHY) {}
+
+void TaskRunnerImpl::TaskWithMetadata::operator()() {
+ TRACE_SET_HIERARCHY(trace_ids_);
+ std::move(task_)();
+}
+
TaskRunnerImpl::TaskRunnerImpl(platform::ClockNowFunctionPtr now_function,
TaskWaiter* event_waiter,
Clock::duration waiter_timeout)
@@ -21,7 +29,7 @@
void TaskRunnerImpl::PostPackagedTask(Task task) {
std::lock_guard<std::mutex> lock(task_mutex_);
- tasks_.push_back(std::move(task));
+ tasks_.emplace_back(std::move(task));
if (task_waiter_) {
task_waiter_->OnTaskPosted();
} else {
@@ -77,7 +85,7 @@
running_tasks_.swap(tasks_);
}
- for (Task& task : running_tasks_) {
+ for (TaskWithMetadata& task : running_tasks_) {
// Move the task to the stack so that its bound state is freed immediately
// after being run.
std::move(task)();
@@ -99,7 +107,7 @@
}
OSP_DVLOG << "Running " << running_tasks_.size() << " tasks...";
- for (Task& task : running_tasks_) {
+ for (TaskWithMetadata& task : running_tasks_) {
// Move the task to the stack so that its bound state is freed immediately
// after being run.
std::move(task)();