/* * Copyright (c) 2012 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. */ #include "trace_win.h" #include <cassert> #include <stdarg.h> #include "Mmsystem.h" #if defined(_DEBUG) #define BUILDMODE "d" #elif defined(DEBUG) #define BUILDMODE "d" #elif defined(NDEBUG) #define BUILDMODE "r" #else #define BUILDMODE "?" #endif #define BUILDTIME __TIME__ #define BUILDDATE __DATE__ // Example: "Oct 10 2002 12:05:30 r" #define BUILDINFO BUILDDATE " " BUILDTIME " " BUILDMODE namespace webrtc { TraceWindows::TraceWindows() : _prevAPITickCount(0), _prevTickCount(0) { } TraceWindows::~TraceWindows() { StopThread(); } WebRtc_Word32 TraceWindows::AddTime(char* traceMessage, const TraceLevel level) const { WebRtc_UWord32 dwCurrentTime = timeGetTime(); SYSTEMTIME systemTime; GetSystemTime(&systemTime); if(level == kTraceApiCall) { WebRtc_UWord32 dwDeltaTime = dwCurrentTime- _prevTickCount; _prevTickCount = dwCurrentTime; 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); } // Messages is 12 characters. 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::AddDateTimeInfo(char* traceMessage) const { _prevAPITickCount = timeGetTime(); _prevTickCount = _prevAPITickCount; SYSTEMTIME sysTime; GetLocalTime (&sysTime); TCHAR szDateStr[20]; TCHAR szTimeStr[20]; // Create date string (e.g. Apr 04 2002) GetDateFormat(LOCALE_SYSTEM_DEFAULT, 0, &sysTime, TEXT("MMM dd yyyy"), szDateStr, 20); // Create time string (e.g. 15:32:08) GetTimeFormat(LOCALE_SYSTEM_DEFAULT, 0, &sysTime, TEXT("HH':'mm':'ss"), szTimeStr, 20); sprintf(traceMessage, "Local Date: %s Local Time: %s", szDateStr, szTimeStr); // Include NULL termination (hence + 1). return static_cast<WebRtc_Word32>(strlen(traceMessage)+ 1); } } // namespace webrtc