/* * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #ifndef WEBRTC_TEST_TEST_SUPPORT_TRACE_TO_STDERR_H_ #define WEBRTC_TEST_TEST_SUPPORT_TRACE_TO_STDERR_H_ #include "webrtc/system_wrappers/interface/trace.h" namespace webrtc { namespace test { // Upon constructing an instance of this class, all traces will be redirected // to stderr. At destruction, redirection is halted. class TraceToStderr : public TraceCallback { public: TraceToStderr(); // Set |override_time| to true to control the time printed with each trace // through SetTimeSeconds(). Otherwise, the trace's usual wallclock time is // used. // // This is useful for offline test tools, where the file time is much more // informative than the real time. explicit TraceToStderr(bool override_time); virtual ~TraceToStderr(); // Every subsequent trace printout will use |time|. Has no effect if // |override_time| in the constructor was set to false. // // No attempt is made to ensure thread-safety between the trace writing and // time updating. In tests, since traces will normally be triggered by the // main thread doing the time updating, this should be of no concern. virtual void SetTimeSeconds(float time); // Implements TraceCallback. virtual void Print(TraceLevel level, const char* msg_array, int length) OVERRIDE; private: bool override_time_; float time_seconds_; }; } // namespace test } // namespace webrtc #endif // WEBRTC_TEST_TEST_SUPPORT_TRACE_TO_STDERR_H_