Reformatted trace* files.
BUG= TEST=Trybots. Review URL: https://webrtc-codereview.appspot.com/1015004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3329 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
		@@ -6,71 +6,72 @@
 | 
			
		||||
 *  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.
 | 
			
		||||
 *
 | 
			
		||||
 *  System independent wrapper for logging runtime information to file.
 | 
			
		||||
 *  Note: All log messages will be written to the same trace file.
 | 
			
		||||
 *  Note: If too many messages are written to file there will be a build up of
 | 
			
		||||
 *  messages. Apply filtering to avoid that.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
// System independent wrapper for logging runtime information to file.
 | 
			
		||||
// Note: All log messages will be written to the same trace file.
 | 
			
		||||
// Note: If too many messages are written to file there will be a build up of
 | 
			
		||||
//       messages. Apply filtering to avoid that.
 | 
			
		||||
#ifndef WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_
 | 
			
		||||
#define WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_
 | 
			
		||||
 | 
			
		||||
#include "common_types.h"
 | 
			
		||||
#include "typedefs.h"
 | 
			
		||||
#include "webrtc/common_types.h"
 | 
			
		||||
#include "webrtc/typedefs.h"
 | 
			
		||||
 | 
			
		||||
#define WEBRTC_TRACE Trace::Add
 | 
			
		||||
 | 
			
		||||
namespace webrtc {
 | 
			
		||||
class Trace
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
    // Increments the reference count to the trace.
 | 
			
		||||
    static void CreateTrace();
 | 
			
		||||
    // Decrements the reference count to the trace.
 | 
			
		||||
    static void ReturnTrace();
 | 
			
		||||
    // Note: any instance that writes to the trace file should increment and
 | 
			
		||||
    // decrement the reference count on construction and destruction
 | 
			
		||||
    // respectively
 | 
			
		||||
class Trace {
 | 
			
		||||
 public:
 | 
			
		||||
  // Increments the reference count to the trace.
 | 
			
		||||
  static void CreateTrace();
 | 
			
		||||
  // Decrements the reference count to the trace.
 | 
			
		||||
  static void ReturnTrace();
 | 
			
		||||
  // Note: any instance that writes to the trace file should increment and
 | 
			
		||||
  // decrement the reference count on construction and destruction,
 | 
			
		||||
  // respectively.
 | 
			
		||||
 | 
			
		||||
    // Specifies what type of messages should be written to the trace file. The
 | 
			
		||||
    // filter parameter is a bitmask where each message type is enumerated by
 | 
			
		||||
    // the TraceLevel enumerator. TODO(hellner): why is the
 | 
			
		||||
    // TraceLevel enumerator not defined in this file?
 | 
			
		||||
    static WebRtc_Word32 SetLevelFilter(const WebRtc_UWord32 filter);
 | 
			
		||||
  // Specifies what type of messages should be written to the trace file. The
 | 
			
		||||
  // filter parameter is a bitmask where each message type is enumerated by the
 | 
			
		||||
  // TraceLevel enumerator. TODO(hellner): why is the TraceLevel enumerator not
 | 
			
		||||
  // defined in this file?
 | 
			
		||||
  static WebRtc_Word32 SetLevelFilter(const WebRtc_UWord32 filter);
 | 
			
		||||
 | 
			
		||||
    // Returns what type of messages are written to the trace file.
 | 
			
		||||
    static WebRtc_Word32 LevelFilter(WebRtc_UWord32& filter);
 | 
			
		||||
  // Returns what type of messages are written to the trace file.
 | 
			
		||||
  static WebRtc_Word32 LevelFilter(WebRtc_UWord32& filter);
 | 
			
		||||
 | 
			
		||||
    // Sets the file name. If addFileCounter is false the same file will be
 | 
			
		||||
    // reused when it fills up. If it's true a new file with incremented name
 | 
			
		||||
    // will be used.
 | 
			
		||||
    static WebRtc_Word32 SetTraceFile(const char* fileName,
 | 
			
		||||
                                      const bool addFileCounter = false);
 | 
			
		||||
  // Sets the file name. If add_file_counter is false the same file will be
 | 
			
		||||
  // reused when it fills up. If it's true a new file with incremented name
 | 
			
		||||
  // will be used.
 | 
			
		||||
  static WebRtc_Word32 SetTraceFile(const char* file_name,
 | 
			
		||||
                                    const bool add_file_counter = false);
 | 
			
		||||
 | 
			
		||||
    // Returns the name of the file that the trace is currently writing to.
 | 
			
		||||
    static WebRtc_Word32 TraceFile(char fileName[1024]);
 | 
			
		||||
  // Returns the name of the file that the trace is currently writing to.
 | 
			
		||||
  static WebRtc_Word32 TraceFile(char file_name[1024]);
 | 
			
		||||
 | 
			
		||||
    // Registers callback to receive trace messages. TODO (hellner)
 | 
			
		||||
    // why not use OutStream instead? Why is TraceCallback not defined in this
 | 
			
		||||
    // file
 | 
			
		||||
    static WebRtc_Word32 SetTraceCallback(TraceCallback* callback);
 | 
			
		||||
  // Registers callback to receive trace messages.
 | 
			
		||||
  // TODO(hellner): Why not use OutStream instead? Why is TraceCallback not
 | 
			
		||||
  // defined in this file?
 | 
			
		||||
  static WebRtc_Word32 SetTraceCallback(TraceCallback* callback);
 | 
			
		||||
 | 
			
		||||
    // Adds a trace message for writing to file. The message is put in a queue
 | 
			
		||||
    // for writing to file whenever possible for performance reasons. I.e. there
 | 
			
		||||
    // is a crash it is possible that the last, vital logs are not logged yet.
 | 
			
		||||
    // level is the type of message to log. If that type of messages is
 | 
			
		||||
    // filtered it will not be written to file. module is an identifier for what
 | 
			
		||||
    // part of the code the message is coming.
 | 
			
		||||
    // id is an identifier that should be unique for that set of classes that
 | 
			
		||||
    // are associated (e.g. all instances owned by an engine).
 | 
			
		||||
    // msg and the ellipsis are the same as e.g. sprintf.
 | 
			
		||||
    // TODO (hellner) Why is TraceModule not defined in this file?
 | 
			
		||||
    static void Add(const TraceLevel level,
 | 
			
		||||
                    const TraceModule module,
 | 
			
		||||
                    const WebRtc_Word32 id,
 | 
			
		||||
                    const char* msg, ...);
 | 
			
		||||
  // Adds a trace message for writing to file. The message is put in a queue
 | 
			
		||||
  // for writing to file whenever possible for performance reasons. I.e. there
 | 
			
		||||
  // is a crash it is possible that the last, vital logs are not logged yet.
 | 
			
		||||
  // level is the type of message to log. If that type of messages is
 | 
			
		||||
  // filtered it will not be written to file. module is an identifier for what
 | 
			
		||||
  // part of the code the message is coming.
 | 
			
		||||
  // id is an identifier that should be unique for that set of classes that
 | 
			
		||||
  // are associated (e.g. all instances owned by an engine).
 | 
			
		||||
  // msg and the ellipsis are the same as e.g. sprintf.
 | 
			
		||||
  // TODO(hellner) Why is TraceModule not defined in this file?
 | 
			
		||||
  static void Add(const TraceLevel level,
 | 
			
		||||
                  const TraceModule module,
 | 
			
		||||
                  const WebRtc_Word32 id,
 | 
			
		||||
                  const char* msg, ...);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace webrtc
 | 
			
		||||
#endif // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_
 | 
			
		||||
}  // namespace webrtc
 | 
			
		||||
 | 
			
		||||
#endif  // WEBRTC_SYSTEM_WRAPPERS_INTERFACE_TRACE_H_
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -11,122 +11,122 @@
 | 
			
		||||
#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_IMPL_H_
 | 
			
		||||
#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_IMPL_H_
 | 
			
		||||
 | 
			
		||||
#include "system_wrappers/interface/critical_section_wrapper.h"
 | 
			
		||||
#include "system_wrappers/interface/event_wrapper.h"
 | 
			
		||||
#include "system_wrappers/interface/file_wrapper.h"
 | 
			
		||||
#include "system_wrappers/interface/static_instance.h"
 | 
			
		||||
#include "system_wrappers/interface/trace.h"
 | 
			
		||||
#include "system_wrappers/interface/thread_wrapper.h"
 | 
			
		||||
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
 | 
			
		||||
#include "webrtc/system_wrappers/interface/event_wrapper.h"
 | 
			
		||||
#include "webrtc/system_wrappers/interface/file_wrapper.h"
 | 
			
		||||
#include "webrtc/system_wrappers/interface/static_instance.h"
 | 
			
		||||
#include "webrtc/system_wrappers/interface/thread_wrapper.h"
 | 
			
		||||
#include "webrtc/system_wrappers/interface/trace.h"
 | 
			
		||||
 | 
			
		||||
namespace webrtc {
 | 
			
		||||
 | 
			
		||||
// TODO (pwestin) WEBRTC_TRACE_MAX_QUEUE needs to be tweaked
 | 
			
		||||
// TODO (hellner) the buffer should be close to how much the system can write to
 | 
			
		||||
//                file. Increasing the buffer will not solve anything. Sooner or
 | 
			
		||||
//                later the buffer is going to fill up anyways.
 | 
			
		||||
// TODO(pwestin) WEBRTC_TRACE_MAX_QUEUE needs to be tweaked
 | 
			
		||||
// TODO(hellner) the buffer should be close to how much the system can write to
 | 
			
		||||
//               file. Increasing the buffer will not solve anything. Sooner or
 | 
			
		||||
//               later the buffer is going to fill up anyways.
 | 
			
		||||
#if defined(WEBRTC_IOS)
 | 
			
		||||
    #define WEBRTC_TRACE_MAX_QUEUE  2000
 | 
			
		||||
#define WEBRTC_TRACE_MAX_QUEUE  2000
 | 
			
		||||
#else
 | 
			
		||||
    #define WEBRTC_TRACE_MAX_QUEUE  8000
 | 
			
		||||
#define WEBRTC_TRACE_MAX_QUEUE  8000
 | 
			
		||||
#endif
 | 
			
		||||
#define WEBRTC_TRACE_NUM_ARRAY 2
 | 
			
		||||
#define WEBRTC_TRACE_MAX_MESSAGE_SIZE 256
 | 
			
		||||
// Total buffer size is WEBRTC_TRACE_NUM_ARRAY (number of buffer partitions) *
 | 
			
		||||
// WEBRTC_TRACE_MAX_QUEUE (number of lines per buffer partition) *
 | 
			
		||||
// WEBRTC_TRACE_MAX_MESSAGE_SIZE (number of 1 byte charachters per line) =
 | 
			
		||||
// 1 or 4 Mbyte
 | 
			
		||||
// 1 or 4 Mbyte.
 | 
			
		||||
 | 
			
		||||
#define WEBRTC_TRACE_MAX_FILE_SIZE 100*1000
 | 
			
		||||
// Number of rows that may be written to file. On average 110 bytes per row (max
 | 
			
		||||
// 256 bytes per row). So on average 110*100*1000 = 11 Mbyte, max 256*100*1000 =
 | 
			
		||||
// 25.6 Mbyte
 | 
			
		||||
 | 
			
		||||
class TraceImpl : public Trace
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    virtual ~TraceImpl();
 | 
			
		||||
class TraceImpl : public Trace {
 | 
			
		||||
 public:
 | 
			
		||||
  virtual ~TraceImpl();
 | 
			
		||||
 | 
			
		||||
    static TraceImpl* CreateInstance();
 | 
			
		||||
    static TraceImpl* GetTrace(const TraceLevel level = kTraceAll);
 | 
			
		||||
  static TraceImpl* CreateInstance();
 | 
			
		||||
  static TraceImpl* GetTrace(const TraceLevel level = kTraceAll);
 | 
			
		||||
 | 
			
		||||
    WebRtc_Word32 SetTraceFileImpl(const char* fileName,
 | 
			
		||||
                                   const bool addFileCounter);
 | 
			
		||||
    WebRtc_Word32 TraceFileImpl(
 | 
			
		||||
        char fileName[FileWrapper::kMaxFileNameSize]);
 | 
			
		||||
  WebRtc_Word32 SetTraceFileImpl(const char* file_name,
 | 
			
		||||
                                 const bool add_file_counter);
 | 
			
		||||
  WebRtc_Word32 TraceFileImpl(
 | 
			
		||||
    char file_name[FileWrapper::kMaxFileNameSize]);
 | 
			
		||||
 | 
			
		||||
    WebRtc_Word32 SetTraceCallbackImpl(TraceCallback* callback);
 | 
			
		||||
  WebRtc_Word32 SetTraceCallbackImpl(TraceCallback* callback);
 | 
			
		||||
 | 
			
		||||
    void AddImpl(const TraceLevel level, const TraceModule module,
 | 
			
		||||
                 const WebRtc_Word32 id, const char* msg);
 | 
			
		||||
  void AddImpl(const TraceLevel level, const TraceModule module,
 | 
			
		||||
               const WebRtc_Word32 id, const char* msg);
 | 
			
		||||
 | 
			
		||||
    bool StopThread();
 | 
			
		||||
  bool StopThread();
 | 
			
		||||
 | 
			
		||||
    bool TraceCheck(const TraceLevel level) const;
 | 
			
		||||
  bool TraceCheck(const TraceLevel level) const;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
    TraceImpl();
 | 
			
		||||
 protected:
 | 
			
		||||
  TraceImpl();
 | 
			
		||||
 | 
			
		||||
    static TraceImpl* StaticInstance(CountOperation count_operation,
 | 
			
		||||
        const TraceLevel level = kTraceAll);
 | 
			
		||||
  static TraceImpl* StaticInstance(CountOperation count_operation,
 | 
			
		||||
                                   const TraceLevel level = kTraceAll);
 | 
			
		||||
 | 
			
		||||
    WebRtc_Word32 AddThreadId(char* traceMessage) const;
 | 
			
		||||
  WebRtc_Word32 AddThreadId(char* trace_message) const;
 | 
			
		||||
 | 
			
		||||
    // OS specific implementations
 | 
			
		||||
    virtual WebRtc_Word32 AddTime(char* traceMessage,
 | 
			
		||||
                                  const TraceLevel level) const = 0;
 | 
			
		||||
  // OS specific implementations.
 | 
			
		||||
  virtual WebRtc_Word32 AddTime(char* trace_message,
 | 
			
		||||
                                const TraceLevel level) const = 0;
 | 
			
		||||
 | 
			
		||||
    virtual WebRtc_Word32 AddBuildInfo(char* traceMessage) const = 0;
 | 
			
		||||
    virtual WebRtc_Word32 AddDateTimeInfo(char* traceMessage) const = 0;
 | 
			
		||||
  virtual WebRtc_Word32 AddBuildInfo(char* trace_message) const = 0;
 | 
			
		||||
  virtual WebRtc_Word32 AddDateTimeInfo(char* trace_message) const = 0;
 | 
			
		||||
 | 
			
		||||
    static bool Run(void* obj);
 | 
			
		||||
    bool Process();
 | 
			
		||||
  static bool Run(void* obj);
 | 
			
		||||
  bool Process();
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    friend class Trace;
 | 
			
		||||
 private:
 | 
			
		||||
  friend class Trace;
 | 
			
		||||
 | 
			
		||||
    WebRtc_Word32 AddLevel(char* szMessage, const TraceLevel level) const;
 | 
			
		||||
  WebRtc_Word32 AddLevel(char* sz_message, const TraceLevel level) const;
 | 
			
		||||
 | 
			
		||||
    WebRtc_Word32 AddModuleAndId(char* traceMessage, const TraceModule module,
 | 
			
		||||
                                 const WebRtc_Word32 id) const;
 | 
			
		||||
  WebRtc_Word32 AddModuleAndId(char* trace_message, const TraceModule module,
 | 
			
		||||
                               const WebRtc_Word32 id) const;
 | 
			
		||||
 | 
			
		||||
    WebRtc_Word32 AddMessage(char* traceMessage,
 | 
			
		||||
                             const char msg[WEBRTC_TRACE_MAX_MESSAGE_SIZE],
 | 
			
		||||
                             const WebRtc_UWord16 writtenSoFar) const;
 | 
			
		||||
  WebRtc_Word32 AddMessage(char* trace_message,
 | 
			
		||||
                           const char msg[WEBRTC_TRACE_MAX_MESSAGE_SIZE],
 | 
			
		||||
                           const WebRtc_UWord16 written_so_far) const;
 | 
			
		||||
 | 
			
		||||
    void AddMessageToList(
 | 
			
		||||
        const char traceMessage[WEBRTC_TRACE_MAX_MESSAGE_SIZE],
 | 
			
		||||
        const WebRtc_UWord16 length,
 | 
			
		||||
        const TraceLevel level);
 | 
			
		||||
  void AddMessageToList(
 | 
			
		||||
    const char trace_message[WEBRTC_TRACE_MAX_MESSAGE_SIZE],
 | 
			
		||||
    const WebRtc_UWord16 length,
 | 
			
		||||
    const TraceLevel level);
 | 
			
		||||
 | 
			
		||||
    bool UpdateFileName(
 | 
			
		||||
        const char fileNameUTF8[FileWrapper::kMaxFileNameSize],
 | 
			
		||||
        char fileNameWithCounterUTF8[FileWrapper::kMaxFileNameSize],
 | 
			
		||||
        const WebRtc_UWord32 newCount) const;
 | 
			
		||||
  bool UpdateFileName(
 | 
			
		||||
    const char file_name_utf8[FileWrapper::kMaxFileNameSize],
 | 
			
		||||
    char file_name_with_counter_utf8[FileWrapper::kMaxFileNameSize],
 | 
			
		||||
    const WebRtc_UWord32 new_count) const;
 | 
			
		||||
 | 
			
		||||
    bool CreateFileName(
 | 
			
		||||
        const char fileNameUTF8[FileWrapper::kMaxFileNameSize],
 | 
			
		||||
        char fileNameWithCounterUTF8[FileWrapper::kMaxFileNameSize],
 | 
			
		||||
        const WebRtc_UWord32 newCount) const;
 | 
			
		||||
  bool CreateFileName(
 | 
			
		||||
    const char file_name_utf8[FileWrapper::kMaxFileNameSize],
 | 
			
		||||
    char file_name_with_counter_utf8[FileWrapper::kMaxFileNameSize],
 | 
			
		||||
    const WebRtc_UWord32 new_count) const;
 | 
			
		||||
 | 
			
		||||
    void WriteToFile();
 | 
			
		||||
  void WriteToFile();
 | 
			
		||||
 | 
			
		||||
    CriticalSectionWrapper* _critsectInterface;
 | 
			
		||||
    TraceCallback* _callback;
 | 
			
		||||
    WebRtc_UWord32 _rowCountText;
 | 
			
		||||
    WebRtc_UWord32 _fileCountText;
 | 
			
		||||
  CriticalSectionWrapper* critsect_interface_;
 | 
			
		||||
  TraceCallback* callback_;
 | 
			
		||||
  WebRtc_UWord32 row_count_text_;
 | 
			
		||||
  WebRtc_UWord32 file_count_text_;
 | 
			
		||||
 | 
			
		||||
    FileWrapper& _traceFile;
 | 
			
		||||
    ThreadWrapper& _thread;
 | 
			
		||||
    EventWrapper& _event;
 | 
			
		||||
  FileWrapper& trace_file_;
 | 
			
		||||
  ThreadWrapper& thread_;
 | 
			
		||||
  EventWrapper& event_;
 | 
			
		||||
 | 
			
		||||
    // _critsectArray protects _activeQueue
 | 
			
		||||
    CriticalSectionWrapper* _critsectArray;
 | 
			
		||||
    WebRtc_UWord16 _nextFreeIdx[WEBRTC_TRACE_NUM_ARRAY];
 | 
			
		||||
    TraceLevel _level[WEBRTC_TRACE_NUM_ARRAY][WEBRTC_TRACE_MAX_QUEUE];
 | 
			
		||||
    WebRtc_UWord16 _length[WEBRTC_TRACE_NUM_ARRAY][WEBRTC_TRACE_MAX_QUEUE];
 | 
			
		||||
    char* _messageQueue[WEBRTC_TRACE_NUM_ARRAY][WEBRTC_TRACE_MAX_QUEUE];
 | 
			
		||||
    WebRtc_UWord8 _activeQueue;
 | 
			
		||||
  // critsect_array_ protects active_queue_.
 | 
			
		||||
  CriticalSectionWrapper* critsect_array_;
 | 
			
		||||
  WebRtc_UWord16 next_free_idx_[WEBRTC_TRACE_NUM_ARRAY];
 | 
			
		||||
  TraceLevel level_[WEBRTC_TRACE_NUM_ARRAY][WEBRTC_TRACE_MAX_QUEUE];
 | 
			
		||||
  WebRtc_UWord16 length_[WEBRTC_TRACE_NUM_ARRAY][WEBRTC_TRACE_MAX_QUEUE];
 | 
			
		||||
  char* message_queue_[WEBRTC_TRACE_NUM_ARRAY][WEBRTC_TRACE_MAX_QUEUE];
 | 
			
		||||
  WebRtc_UWord8 active_queue_;
 | 
			
		||||
};
 | 
			
		||||
} // namespace webrtc
 | 
			
		||||
 | 
			
		||||
#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_IMPL_H_
 | 
			
		||||
}  // namespace webrtc
 | 
			
		||||
 | 
			
		||||
#endif  // WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_IMPL_H_
 | 
			
		||||
 
 | 
			
		||||
@@ -8,49 +8,39 @@
 | 
			
		||||
 *  be found in the AUTHORS file in the root of the source tree.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "trace.h"
 | 
			
		||||
#include "webrtc/system_wrappers/interface/trace.h"
 | 
			
		||||
 | 
			
		||||
namespace webrtc {
 | 
			
		||||
 | 
			
		||||
void Trace::CreateTrace()
 | 
			
		||||
{
 | 
			
		||||
void Trace::CreateTrace() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Trace::ReturnTrace()
 | 
			
		||||
{
 | 
			
		||||
void Trace::ReturnTrace() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 Trace::SetLevelFilter(WebRtc_UWord32 /*filter*/)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
WebRtc_Word32 Trace::SetLevelFilter(WebRtc_UWord32 filter) {
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 Trace::LevelFilter(WebRtc_UWord32& /*filter*/)
 | 
			
		||||
{
 | 
			
		||||
    return 0;
 | 
			
		||||
WebRtc_Word32 Trace::LevelFilter(WebRtc_UWord32& filter) {
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 Trace::TraceFile(
 | 
			
		||||
    char/*fileName*/[1024])
 | 
			
		||||
{
 | 
			
		||||
    return -1;
 | 
			
		||||
WebRtc_Word32 Trace::TraceFile(char file_name[1024]) {
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 Trace::SetTraceFile(const char* /*fileName*/,
 | 
			
		||||
                                  const bool /*addFileCounter*/)
 | 
			
		||||
{
 | 
			
		||||
    return -1;
 | 
			
		||||
WebRtc_Word32 Trace::SetTraceFile(const char* file_name,
 | 
			
		||||
                                  const bool add_file_counter) {
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 Trace::SetTraceCallback(TraceCallback* /*callback*/)
 | 
			
		||||
{
 | 
			
		||||
    return -1;
 | 
			
		||||
WebRtc_Word32 Trace::SetTraceCallback(TraceCallback* callback) {
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Trace::Add(const TraceLevel /*level*/, const TraceModule /*module*/,
 | 
			
		||||
                const WebRtc_Word32 /*id*/, const char* /*msg*/, ...)
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
void Trace::Add(const TraceLevel level, const TraceModule module,
 | 
			
		||||
                const WebRtc_Word32 id, const char* msg, ...) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace webrtc
 | 
			
		||||
}  // namespace webrtc
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *  be found in the AUTHORS file in the root of the source tree.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "trace_posix.h"
 | 
			
		||||
#include "webrtc/system_wrappers/source/trace_posix.h"
 | 
			
		||||
 | 
			
		||||
#include <cassert>
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
@@ -17,19 +17,19 @@
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
#ifdef WEBRTC_ANDROID
 | 
			
		||||
    #include <pthread.h>
 | 
			
		||||
#include <pthread.h>
 | 
			
		||||
#else
 | 
			
		||||
    #include <iostream>
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_DEBUG)
 | 
			
		||||
    #define BUILDMODE "d"
 | 
			
		||||
#define BUILDMODE "d"
 | 
			
		||||
#elif defined(DEBUG)
 | 
			
		||||
    #define BUILDMODE "d"
 | 
			
		||||
#define BUILDMODE "d"
 | 
			
		||||
#elif defined(NDEBUG)
 | 
			
		||||
    #define BUILDMODE "r"
 | 
			
		||||
#define BUILDMODE "r"
 | 
			
		||||
#else
 | 
			
		||||
    #define BUILDMODE "?"
 | 
			
		||||
#define BUILDMODE "?"
 | 
			
		||||
#endif
 | 
			
		||||
#define BUILDTIME __TIME__
 | 
			
		||||
#define BUILDDATE __DATE__
 | 
			
		||||
@@ -37,84 +37,75 @@
 | 
			
		||||
#define BUILDINFO BUILDDATE " " BUILDTIME " " BUILDMODE
 | 
			
		||||
 | 
			
		||||
namespace webrtc {
 | 
			
		||||
TracePosix::TracePosix()
 | 
			
		||||
{
 | 
			
		||||
    struct timeval systemTimeHighRes;
 | 
			
		||||
    gettimeofday(&systemTimeHighRes, 0);
 | 
			
		||||
    _prevAPITickCount = _prevTickCount = systemTimeHighRes.tv_sec;
 | 
			
		||||
 | 
			
		||||
TracePosix::TracePosix() {
 | 
			
		||||
  struct timeval system_time_high_res;
 | 
			
		||||
  gettimeofday(&system_time_high_res, 0);
 | 
			
		||||
  prev_api_tick_count_ = prev_tick_count_ = system_time_high_res.tv_sec;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TracePosix::~TracePosix()
 | 
			
		||||
{
 | 
			
		||||
    StopThread();
 | 
			
		||||
TracePosix::~TracePosix() {
 | 
			
		||||
  StopThread();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 TracePosix::AddTime(char* traceMessage,
 | 
			
		||||
                                  const TraceLevel level) const
 | 
			
		||||
{
 | 
			
		||||
    struct timeval systemTimeHighRes;
 | 
			
		||||
    if (gettimeofday(&systemTimeHighRes, 0) == -1)
 | 
			
		||||
    {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    struct tm buffer;
 | 
			
		||||
    const struct tm* systemTime =
 | 
			
		||||
        localtime_r(&systemTimeHighRes.tv_sec, &buffer);
 | 
			
		||||
WebRtc_Word32 TracePosix::AddTime(char* trace_message,
 | 
			
		||||
                                  const TraceLevel level) const {
 | 
			
		||||
  struct timeval system_time_high_res;
 | 
			
		||||
  if (gettimeofday(&system_time_high_res, 0) == -1) {
 | 
			
		||||
    return -1;
 | 
			
		||||
  }
 | 
			
		||||
  struct tm buffer;
 | 
			
		||||
  const struct tm* system_time =
 | 
			
		||||
    localtime_r(&system_time_high_res.tv_sec, &buffer);
 | 
			
		||||
 | 
			
		||||
    const WebRtc_UWord32 ms_time = systemTimeHighRes.tv_usec / 1000;
 | 
			
		||||
    WebRtc_UWord32 prevTickCount = 0;
 | 
			
		||||
    if (level == kTraceApiCall)
 | 
			
		||||
    {
 | 
			
		||||
        prevTickCount = _prevTickCount;
 | 
			
		||||
        _prevTickCount = ms_time;
 | 
			
		||||
    } else {
 | 
			
		||||
        prevTickCount = _prevAPITickCount;
 | 
			
		||||
        _prevAPITickCount = ms_time;
 | 
			
		||||
    }
 | 
			
		||||
    WebRtc_UWord32 dwDeltaTime = ms_time - prevTickCount;
 | 
			
		||||
    if (prevTickCount == 0)
 | 
			
		||||
    {
 | 
			
		||||
        dwDeltaTime = 0;
 | 
			
		||||
    }
 | 
			
		||||
    if (dwDeltaTime > 0x0fffffff)
 | 
			
		||||
    {
 | 
			
		||||
        // Either wraparound or data race.
 | 
			
		||||
        dwDeltaTime = 0;
 | 
			
		||||
    }
 | 
			
		||||
    if(dwDeltaTime > 99999)
 | 
			
		||||
    {
 | 
			
		||||
        dwDeltaTime = 99999;
 | 
			
		||||
    }
 | 
			
		||||
  const WebRtc_UWord32 ms_time = system_time_high_res.tv_usec / 1000;
 | 
			
		||||
  WebRtc_UWord32 prev_tickCount = 0;
 | 
			
		||||
  if (level == kTraceApiCall) {
 | 
			
		||||
    prev_tickCount = prev_tick_count_;
 | 
			
		||||
    prev_tick_count_ = ms_time;
 | 
			
		||||
  } else {
 | 
			
		||||
    prev_tickCount = prev_api_tick_count_;
 | 
			
		||||
    prev_api_tick_count_ = ms_time;
 | 
			
		||||
  }
 | 
			
		||||
  WebRtc_UWord32 dw_delta_time = ms_time - prev_tickCount;
 | 
			
		||||
  if (prev_tickCount == 0) {
 | 
			
		||||
    dw_delta_time = 0;
 | 
			
		||||
  }
 | 
			
		||||
  if (dw_delta_time > 0x0fffffff) {
 | 
			
		||||
    // Either wraparound or data race.
 | 
			
		||||
    dw_delta_time = 0;
 | 
			
		||||
  }
 | 
			
		||||
  if (dw_delta_time > 99999) {
 | 
			
		||||
    dw_delta_time = 99999;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    sprintf(traceMessage, "(%2u:%2u:%2u:%3u |%5lu) ", systemTime->tm_hour,
 | 
			
		||||
            systemTime->tm_min, systemTime->tm_sec, ms_time,
 | 
			
		||||
            static_cast<unsigned long>(dwDeltaTime));
 | 
			
		||||
    // Messages are 22 characters.
 | 
			
		||||
    return 22;
 | 
			
		||||
  sprintf(trace_message, "(%2u:%2u:%2u:%3u |%5lu) ", system_time->tm_hour,
 | 
			
		||||
          system_time->tm_min, system_time->tm_sec, ms_time,
 | 
			
		||||
          static_cast<unsigned long>(dw_delta_time));
 | 
			
		||||
  // Messages are 22 characters.
 | 
			
		||||
  return 22;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 TracePosix::AddBuildInfo(char* traceMessage) const
 | 
			
		||||
{
 | 
			
		||||
    sprintf(traceMessage, "Build info: %s", BUILDINFO);
 | 
			
		||||
    // Include NULL termination (hence + 1).
 | 
			
		||||
    return strlen(traceMessage) + 1;
 | 
			
		||||
WebRtc_Word32 TracePosix::AddBuildInfo(char* trace_message) const {
 | 
			
		||||
  sprintf(trace_message, "Build info: %s", BUILDINFO);
 | 
			
		||||
  // Include NULL termination (hence + 1).
 | 
			
		||||
  return strlen(trace_message) + 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 TracePosix::AddDateTimeInfo(char* traceMessage) const
 | 
			
		||||
{
 | 
			
		||||
    time_t t;
 | 
			
		||||
    time(&t);
 | 
			
		||||
    char buffer[26];  // man ctime says buffer should have room for >=26 bytes.
 | 
			
		||||
    sprintf(traceMessage, "Local Date: %s", ctime_r(&t, buffer));
 | 
			
		||||
    WebRtc_Word32 len = static_cast<WebRtc_Word32>(strlen(traceMessage));
 | 
			
		||||
WebRtc_Word32 TracePosix::AddDateTimeInfo(char* trace_message) const {
 | 
			
		||||
  time_t t;
 | 
			
		||||
  time(&t);
 | 
			
		||||
  char buffer[26];  // man ctime says buffer should have room for >=26 bytes.
 | 
			
		||||
  sprintf(trace_message, "Local Date: %s", ctime_r(&t, buffer));
 | 
			
		||||
  WebRtc_Word32 len = static_cast<WebRtc_Word32>(strlen(trace_message));
 | 
			
		||||
 | 
			
		||||
    if ('\n' == traceMessage[len - 1])
 | 
			
		||||
    {
 | 
			
		||||
        traceMessage[len - 1] = '\0';
 | 
			
		||||
        --len;
 | 
			
		||||
    }
 | 
			
		||||
  if ('\n' == trace_message[len - 1]) {
 | 
			
		||||
    trace_message[len - 1] = '\0';
 | 
			
		||||
    --len;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    // Messages is 12 characters.
 | 
			
		||||
    return len + 1;
 | 
			
		||||
  // Messages is 12 characters.
 | 
			
		||||
  return len + 1;
 | 
			
		||||
}
 | 
			
		||||
} // namespace webrtc
 | 
			
		||||
 | 
			
		||||
}  // namespace webrtc
 | 
			
		||||
 
 | 
			
		||||
@@ -11,26 +11,27 @@
 | 
			
		||||
#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_POSIX_H_
 | 
			
		||||
#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_POSIX_H_
 | 
			
		||||
 | 
			
		||||
#include "critical_section_wrapper.h"
 | 
			
		||||
#include "trace_impl.h"
 | 
			
		||||
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
 | 
			
		||||
#include "webrtc/system_wrappers/source/trace_impl.h"
 | 
			
		||||
 | 
			
		||||
namespace webrtc {
 | 
			
		||||
class TracePosix : public TraceImpl
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    TracePosix();
 | 
			
		||||
    virtual ~TracePosix();
 | 
			
		||||
 | 
			
		||||
    virtual WebRtc_Word32 AddTime(char* traceMessage,
 | 
			
		||||
                                  const TraceLevel level) const;
 | 
			
		||||
class TracePosix : public TraceImpl {
 | 
			
		||||
 public:
 | 
			
		||||
  TracePosix();
 | 
			
		||||
  virtual ~TracePosix();
 | 
			
		||||
 | 
			
		||||
    virtual WebRtc_Word32 AddBuildInfo(char* traceMessage) const;
 | 
			
		||||
    virtual WebRtc_Word32 AddDateTimeInfo(char* traceMessage) const;
 | 
			
		||||
  virtual WebRtc_Word32 AddTime(char* trace_message,
 | 
			
		||||
                                const TraceLevel level) const;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    volatile mutable WebRtc_UWord32  _prevAPITickCount;
 | 
			
		||||
    volatile mutable WebRtc_UWord32  _prevTickCount;
 | 
			
		||||
  virtual WebRtc_Word32 AddBuildInfo(char* trace_message) const;
 | 
			
		||||
  virtual WebRtc_Word32 AddDateTimeInfo(char* trace_message) const;
 | 
			
		||||
 | 
			
		||||
 private:
 | 
			
		||||
  volatile mutable WebRtc_UWord32  prev_api_tick_count_;
 | 
			
		||||
  volatile mutable WebRtc_UWord32  prev_tick_count_;
 | 
			
		||||
};
 | 
			
		||||
} // namespace webrtc
 | 
			
		||||
 | 
			
		||||
#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_POSIX_H_
 | 
			
		||||
}  // namespace webrtc
 | 
			
		||||
 | 
			
		||||
#endif  // WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_POSIX_H_
 | 
			
		||||
 
 | 
			
		||||
@@ -8,11 +8,10 @@
 | 
			
		||||
 *  be found in the AUTHORS file in the root of the source tree.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "system_wrappers/interface/trace.h"
 | 
			
		||||
 | 
			
		||||
#include "gtest/gtest.h"
 | 
			
		||||
#include "system_wrappers/source/cpu_measurement_harness.h"
 | 
			
		||||
#include "testsupport/fileutils.h"
 | 
			
		||||
#include "webrtc/system_wrappers/interface/trace.h"
 | 
			
		||||
#include "webrtc/system_wrappers/source/cpu_measurement_harness.h"
 | 
			
		||||
#include "webrtc/test/testsupport/fileutils.h"
 | 
			
		||||
 | 
			
		||||
using webrtc::CpuMeasurementHarness;
 | 
			
		||||
using webrtc::Trace;
 | 
			
		||||
@@ -23,8 +22,7 @@ class Logger : public webrtc::CpuTarget {
 | 
			
		||||
 public:
 | 
			
		||||
  Logger() {
 | 
			
		||||
    Trace::CreateTrace();
 | 
			
		||||
    std::string trace_file = webrtc::test::OutputPath() +
 | 
			
		||||
        "trace_unittest.txt";
 | 
			
		||||
    std::string trace_file = webrtc::test::OutputPath() + "trace_unittest.txt";
 | 
			
		||||
    Trace::SetTraceFile(trace_file.c_str());
 | 
			
		||||
    Trace::SetLevelFilter(webrtc::kTraceAll);
 | 
			
		||||
  }
 | 
			
		||||
@@ -49,8 +47,8 @@ TEST(TraceTest, DISABLED_CpuUsage) {
 | 
			
		||||
  const int iterations_per_period = 10;
 | 
			
		||||
  const int duration_ms = 1000;
 | 
			
		||||
  CpuMeasurementHarness* cpu_harness =
 | 
			
		||||
      CpuMeasurementHarness::Create(&logger, periodicity_ms,
 | 
			
		||||
                                    iterations_per_period, duration_ms);
 | 
			
		||||
    CpuMeasurementHarness::Create(&logger, periodicity_ms,
 | 
			
		||||
                                  iterations_per_period, duration_ms);
 | 
			
		||||
  cpu_harness->Run();
 | 
			
		||||
  const int average_cpu = cpu_harness->AverageCpu();
 | 
			
		||||
  EXPECT_GE(5, average_cpu);
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 *  be found in the AUTHORS file in the root of the source tree.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "trace_win.h"
 | 
			
		||||
#include "webrtc/system_wrappers/source/trace_win.h"
 | 
			
		||||
 | 
			
		||||
#include <cassert>
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
@@ -16,13 +16,13 @@
 | 
			
		||||
#include "Mmsystem.h"
 | 
			
		||||
 | 
			
		||||
#if defined(_DEBUG)
 | 
			
		||||
    #define BUILDMODE "d"
 | 
			
		||||
#define BUILDMODE "d"
 | 
			
		||||
#elif defined(DEBUG)
 | 
			
		||||
    #define BUILDMODE "d"
 | 
			
		||||
#define BUILDMODE "d"
 | 
			
		||||
#elif defined(NDEBUG)
 | 
			
		||||
    #define BUILDMODE "r"
 | 
			
		||||
#define BUILDMODE "r"
 | 
			
		||||
#else
 | 
			
		||||
    #define BUILDMODE "?"
 | 
			
		||||
#define BUILDMODE "?"
 | 
			
		||||
#endif
 | 
			
		||||
#define BUILDTIME __TIME__
 | 
			
		||||
#define BUILDDATE __DATE__
 | 
			
		||||
@@ -31,101 +31,89 @@
 | 
			
		||||
 | 
			
		||||
namespace webrtc {
 | 
			
		||||
TraceWindows::TraceWindows()
 | 
			
		||||
    : _prevAPITickCount(0),
 | 
			
		||||
      _prevTickCount(0)
 | 
			
		||||
{
 | 
			
		||||
    : prev_api_tick_count_(0),
 | 
			
		||||
      prev_tick_count_(0) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TraceWindows::~TraceWindows()
 | 
			
		||||
{
 | 
			
		||||
    StopThread();
 | 
			
		||||
TraceWindows::~TraceWindows() {
 | 
			
		||||
  StopThread();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 TraceWindows::AddTime(char* traceMessage,
 | 
			
		||||
                                    const TraceLevel level) const
 | 
			
		||||
{
 | 
			
		||||
    WebRtc_UWord32 dwCurrentTime = timeGetTime();
 | 
			
		||||
    SYSTEMTIME systemTime;
 | 
			
		||||
    GetSystemTime(&systemTime);
 | 
			
		||||
WebRtc_Word32 TraceWindows::AddTime(char* trace_message,
 | 
			
		||||
                                    const TraceLevel level) const {
 | 
			
		||||
  WebRtc_UWord32 dw_current_time = timeGetTime();
 | 
			
		||||
  SYSTEMTIME system_time;
 | 
			
		||||
  GetSystemTime(&system_time);
 | 
			
		||||
 | 
			
		||||
    if(level == kTraceApiCall)
 | 
			
		||||
    {
 | 
			
		||||
        WebRtc_UWord32 dwDeltaTime = dwCurrentTime- _prevTickCount;
 | 
			
		||||
        _prevTickCount = dwCurrentTime;
 | 
			
		||||
  if (level == kTraceApiCall) {
 | 
			
		||||
    WebRtc_UWord32 dw_delta_time = dw_current_time - prev_tick_count_;
 | 
			
		||||
    prev_tick_count_ = dw_current_time;
 | 
			
		||||
 | 
			
		||||
        if(_prevTickCount == 0)
 | 
			
		||||
        {
 | 
			
		||||
            dwDeltaTime = 0;
 | 
			
		||||
        }
 | 
			
		||||
        if(dwDeltaTime > 0x0fffffff)
 | 
			
		||||
        {
 | 
			
		||||
            // Either wraparound or data race.
 | 
			
		||||
            dwDeltaTime = 0;
 | 
			
		||||
        }
 | 
			
		||||
        if(dwDeltaTime > 99999)
 | 
			
		||||
        {
 | 
			
		||||
            dwDeltaTime = 99999;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        sprintf (traceMessage, "(%2u:%2u:%2u:%3u |%5lu) ", systemTime.wHour,
 | 
			
		||||
                 systemTime.wMinute, systemTime.wSecond,
 | 
			
		||||
                 systemTime.wMilliseconds, dwDeltaTime);
 | 
			
		||||
    } else {
 | 
			
		||||
        WebRtc_UWord32 dwDeltaTime = dwCurrentTime - _prevAPITickCount;
 | 
			
		||||
        _prevAPITickCount = dwCurrentTime;
 | 
			
		||||
 | 
			
		||||
        if(_prevAPITickCount == 0)
 | 
			
		||||
        {
 | 
			
		||||
            dwDeltaTime = 0;
 | 
			
		||||
        }
 | 
			
		||||
        if(dwDeltaTime > 0x0fffffff)
 | 
			
		||||
        {
 | 
			
		||||
            // Either wraparound or data race.
 | 
			
		||||
            dwDeltaTime = 0;
 | 
			
		||||
        }
 | 
			
		||||
        if(dwDeltaTime > 99999)
 | 
			
		||||
        {
 | 
			
		||||
            dwDeltaTime = 99999;
 | 
			
		||||
        }
 | 
			
		||||
        sprintf (traceMessage, "(%2u:%2u:%2u:%3u |%5lu) ", systemTime.wHour,
 | 
			
		||||
                 systemTime.wMinute, systemTime.wSecond,
 | 
			
		||||
                 systemTime.wMilliseconds, dwDeltaTime);
 | 
			
		||||
    if (prev_tick_count_ == 0) {
 | 
			
		||||
      dw_delta_time = 0;
 | 
			
		||||
    }
 | 
			
		||||
    // Messages is 12 characters.
 | 
			
		||||
    return 22;
 | 
			
		||||
    if (dw_delta_time > 0x0fffffff) {
 | 
			
		||||
      // Either wrap-around or data race.
 | 
			
		||||
      dw_delta_time = 0;
 | 
			
		||||
    }
 | 
			
		||||
    if (dw_delta_time > 99999) {
 | 
			
		||||
      dw_delta_time = 99999;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sprintf(trace_message, "(%2u:%2u:%2u:%3u |%5lu) ", system_time.wHour,
 | 
			
		||||
            system_time.wMinute, system_time.wSecond,
 | 
			
		||||
            system_time.wMilliseconds, dw_delta_time);
 | 
			
		||||
  } else {
 | 
			
		||||
    WebRtc_UWord32 dw_delta_time = dw_current_time - prev_api_tick_count_;
 | 
			
		||||
    prev_api_tick_count_ = dw_current_time;
 | 
			
		||||
 | 
			
		||||
    if (prev_api_tick_count_ == 0) {
 | 
			
		||||
      dw_delta_time = 0;
 | 
			
		||||
    }
 | 
			
		||||
    if (dw_delta_time > 0x0fffffff) {
 | 
			
		||||
      // Either wraparound or data race.
 | 
			
		||||
      dw_delta_time = 0;
 | 
			
		||||
    }
 | 
			
		||||
    if (dw_delta_time > 99999) {
 | 
			
		||||
      dw_delta_time = 99999;
 | 
			
		||||
    }
 | 
			
		||||
    sprintf(trace_message, "(%2u:%2u:%2u:%3u |%5lu) ", system_time.wHour,
 | 
			
		||||
            system_time.wMinute, system_time.wSecond,
 | 
			
		||||
            system_time.wMilliseconds, dw_delta_time);
 | 
			
		||||
  }
 | 
			
		||||
  return 22;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 TraceWindows::AddBuildInfo(char* traceMessage) const
 | 
			
		||||
{
 | 
			
		||||
    // write data and time to text file
 | 
			
		||||
    sprintf(traceMessage, "Build info: %s", BUILDINFO);
 | 
			
		||||
    // Include NULL termination (hence + 1).
 | 
			
		||||
    return static_cast<WebRtc_Word32>(strlen(traceMessage)+1);
 | 
			
		||||
WebRtc_Word32 TraceWindows::AddBuildInfo(char* trace_message) const {
 | 
			
		||||
  // write data and time to text file
 | 
			
		||||
  sprintf(trace_message, "Build info: %s", BUILDINFO);
 | 
			
		||||
  // Include NULL termination (hence + 1).
 | 
			
		||||
  return static_cast<WebRtc_Word32>(strlen(trace_message) + 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WebRtc_Word32 TraceWindows::AddDateTimeInfo(char* traceMessage) const
 | 
			
		||||
{
 | 
			
		||||
    _prevAPITickCount = timeGetTime();
 | 
			
		||||
    _prevTickCount = _prevAPITickCount;
 | 
			
		||||
WebRtc_Word32 TraceWindows::AddDateTimeInfo(char* trace_message) const {
 | 
			
		||||
  prev_api_tick_count_ = timeGetTime();
 | 
			
		||||
  prev_tick_count_ = prev_api_tick_count_;
 | 
			
		||||
 | 
			
		||||
    SYSTEMTIME sysTime;
 | 
			
		||||
    GetLocalTime (&sysTime);
 | 
			
		||||
  SYSTEMTIME sys_time;
 | 
			
		||||
  GetLocalTime(&sys_time);
 | 
			
		||||
 | 
			
		||||
    TCHAR szDateStr[20];
 | 
			
		||||
    TCHAR szTimeStr[20];
 | 
			
		||||
  TCHAR sz_date_str[20];
 | 
			
		||||
  TCHAR sz_time_str[20];
 | 
			
		||||
 | 
			
		||||
    // Create date string (e.g. Apr 04 2002)
 | 
			
		||||
    GetDateFormat(LOCALE_SYSTEM_DEFAULT, 0, &sysTime, TEXT("MMM dd yyyy"),
 | 
			
		||||
                  szDateStr, 20);
 | 
			
		||||
  // Create date string (e.g. Apr 04 2002)
 | 
			
		||||
  GetDateFormat(LOCALE_SYSTEM_DEFAULT, 0, &sys_time, TEXT("MMM dd yyyy"),
 | 
			
		||||
                sz_date_str, 20);
 | 
			
		||||
 | 
			
		||||
    // Create time string (e.g. 15:32:08)
 | 
			
		||||
    GetTimeFormat(LOCALE_SYSTEM_DEFAULT, 0, &sysTime, TEXT("HH':'mm':'ss"),
 | 
			
		||||
                  szTimeStr, 20);
 | 
			
		||||
  // Create time string (e.g. 15:32:08)
 | 
			
		||||
  GetTimeFormat(LOCALE_SYSTEM_DEFAULT, 0, &sys_time, TEXT("HH':'mm':'ss"),
 | 
			
		||||
                sz_time_str, 20);
 | 
			
		||||
 | 
			
		||||
    sprintf(traceMessage, "Local Date: %s Local Time: %s", szDateStr,
 | 
			
		||||
            szTimeStr);
 | 
			
		||||
  sprintf(trace_message, "Local Date: %s Local Time: %s", sz_date_str,
 | 
			
		||||
          sz_time_str);
 | 
			
		||||
 | 
			
		||||
    // Include NULL termination (hence + 1).
 | 
			
		||||
    return static_cast<WebRtc_Word32>(strlen(traceMessage)+ 1);
 | 
			
		||||
  // Include NULL termination (hence + 1).
 | 
			
		||||
  return static_cast<WebRtc_Word32>(strlen(trace_message) + 1);
 | 
			
		||||
}
 | 
			
		||||
} // namespace webrtc
 | 
			
		||||
 | 
			
		||||
}  // namespace webrtc
 | 
			
		||||
 
 | 
			
		||||
@@ -8,29 +8,31 @@
 | 
			
		||||
 *  be found in the AUTHORS file in the root of the source tree.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_WINDOWS_H_
 | 
			
		||||
#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_WINDOWS_H_
 | 
			
		||||
#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_WIN_H_
 | 
			
		||||
#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_WIN_H_
 | 
			
		||||
 | 
			
		||||
#include "trace_impl.h"
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <windows.h>
 | 
			
		||||
 | 
			
		||||
#include "webrtc/system_wrappers/source/trace_impl.h"
 | 
			
		||||
 | 
			
		||||
namespace webrtc {
 | 
			
		||||
class TraceWindows : public TraceImpl
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    TraceWindows();
 | 
			
		||||
    virtual ~TraceWindows();
 | 
			
		||||
 | 
			
		||||
    virtual WebRtc_Word32 AddTime(char* traceMessage,
 | 
			
		||||
                                  const TraceLevel level) const;
 | 
			
		||||
class TraceWindows : public TraceImpl {
 | 
			
		||||
 public:
 | 
			
		||||
  TraceWindows();
 | 
			
		||||
  virtual ~TraceWindows();
 | 
			
		||||
 | 
			
		||||
    virtual WebRtc_Word32 AddBuildInfo(char* traceMessage) const;
 | 
			
		||||
    virtual WebRtc_Word32 AddDateTimeInfo(char* traceMessage) const;
 | 
			
		||||
private:
 | 
			
		||||
    volatile mutable WebRtc_UWord32    _prevAPITickCount;
 | 
			
		||||
    volatile mutable WebRtc_UWord32   _prevTickCount;
 | 
			
		||||
  virtual WebRtc_Word32 AddTime(char* trace_message,
 | 
			
		||||
                                const TraceLevel level) const;
 | 
			
		||||
 | 
			
		||||
  virtual WebRtc_Word32 AddBuildInfo(char* trace_message) const;
 | 
			
		||||
  virtual WebRtc_Word32 AddDateTimeInfo(char* trace_message) const;
 | 
			
		||||
 private:
 | 
			
		||||
  volatile mutable WebRtc_UWord32 prev_api_tick_count_;
 | 
			
		||||
  volatile mutable WebRtc_UWord32 prev_tick_count_;
 | 
			
		||||
};
 | 
			
		||||
} // namespace webrtc
 | 
			
		||||
 | 
			
		||||
#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_WINDOWS_H_
 | 
			
		||||
}  // namespace webrtc
 | 
			
		||||
 | 
			
		||||
#endif  // WEBRTC_SYSTEM_WRAPPERS_SOURCE_TRACE_WIN_H_
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user