142 lines
3.8 KiB
C++
142 lines
3.8 KiB
C++
/*
|
|
* Copyright (c) 2011 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_windows.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::AddThreadId(char* traceMessage) const
|
|
{
|
|
WebRtc_UWord32 threadId= GetCurrentThreadId();
|
|
sprintf (traceMessage, "%10u; ", threadId);
|
|
// Messages is 12 characters.
|
|
return 12;
|
|
}
|
|
|
|
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];
|
|
TCHAR *pSzDateStr = szDateStr;
|
|
TCHAR *pSzTimeStr = szTimeStr;
|
|
|
|
// 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
|