server-re/third-party/BugTrap-1.3-57bd515/source/BTTrace.h
2026-10-14 15:54:34 -04:00

250 lines
6.4 KiB
C++

/*
* This is a part of the BugTrap package.
* Copyright (c) 2005-2009 IntelleSoft.
* All rights reserved.
*
* Description: C++ wrapper for tracing functions.
* Author: Maksim Pyatkovskiy.
*
* This source code is only intended as a supplement to the
* BugTrap package reference and related electronic documentation
* provided with the product. See these sources for detailed
* information regarding the BugTrap package.
*/
#ifndef _BTTRACE_H_
#define _BTTRACE_H_
#pragma once
#ifndef _BUGTRAP_H_
#error Include BugTrap.h first
#endif // _BUGTRAP_H_
#ifndef __cplusplus
#error C++ compiler is required
#endif // __cplusplus
/// C++ wrapper for tracing API.
class BTTrace {
public:
/// Initialize the object.
BTTrace(void) {
Detach();
}
/// Initialize the object.
BTTrace(INT_PTR iHandle) {
m_eDefaultLogLevel = BTLL_INFO;
m_iHandle = iHandle;
}
/// Initialize the object.
BTTrace(LPCTSTR pszLogFileName, BUGTRAP_LOGFORMAT eLogFormat) {
m_eDefaultLogLevel = BTLL_INFO;
m_iHandle = BT_OpenLogFile(pszLogFileName, eLogFormat);
}
/// Destroy the object.
~BTTrace(void) {
Close();
}
/// Open log file.
INT_PTR Open(LPCTSTR pszLogFileName, BUGTRAP_LOGFORMAT eLogFormat) {
Close();
return (m_iHandle = BT_OpenLogFile(pszLogFileName, eLogFormat));
}
/// Attach log file handle.
void Attach(INT_PTR iHandle) {
m_iHandle = iHandle;
}
/// Detach log file handle.
void Detach(void) {
m_eDefaultLogLevel = BTLL_INFO;
m_iHandle = NULL;
}
/// Close log file.
BOOL Close(void) {
BOOL bResult;
if (m_iHandle != NULL) {
bResult = BT_CloseLogFile(m_iHandle);
Detach();
} else {
bResult = FALSE;
}
return bResult;
}
/// Get default log level.
BUGTRAP_LOGLEVEL GetDefaultLogLevel(void) const {
return m_eDefaultLogLevel;
}
/// Set default log level.
void SetDefaultLogLevel(BUGTRAP_LOGLEVEL eDefaultLogLevel) {
m_eDefaultLogLevel = eDefaultLogLevel;
}
/// Flush contents of the log file.
BOOL Flush(void) const {
return BT_FlushLogFile(m_iHandle);
}
/// Get custom log file handle.
INT_PTR GetHandle(void) const {
return m_iHandle;
}
/// Get custom log file name.
LPCTSTR GetFileName(void) const {
return BT_GetLogFileName(m_iHandle);
}
/// Get custom log file size in records.
DWORD GetLogSizeInEntries(void) const {
return BT_GetLogSizeInEntries(m_iHandle);
}
/// Set custom log file size in records.
BOOL SetLogSizeInEntries(DWORD dwSize) const {
return BT_SetLogSizeInEntries(m_iHandle, dwSize);
}
/// Get custom log file size in bytes.
DWORD GetLogSizeInBytes(void) const {
return BT_GetLogSizeInBytes(m_iHandle);
}
/// Set custom log file size in bytes.
BOOL SetLogSizeInBytes(DWORD dwSize) const {
return BT_SetLogSizeInBytes(m_iHandle, dwSize);
}
/// Return current set of log flags.
DWORD GetLogFlags(void) const {
return BT_GetLogFlags(m_iHandle);
}
/// Set new set of log flags.
BOOL SetLogFlags(DWORD dwLogFlags) const {
return BT_SetLogFlags(m_iHandle, dwLogFlags);
}
/// Return minimal log level accepted by tracing functions.
BUGTRAP_LOGLEVEL GetLogLevel(void) const {
return BT_GetLogLevel(m_iHandle);
}
/// Set minimal log level accepted by tracing functions.
BOOL SetLogLevel(BUGTRAP_LOGLEVEL eLogLevel) const {
return BT_SetLogLevel(m_iHandle, eLogLevel);
}
/// Get log echo mode.
DWORD GetLogEchoMode(void) const {
return BT_GetLogEchoMode(m_iHandle);
}
/// Set log echo mode.
BOOL SetLogEchoMode(DWORD dwLogEchoMode) const {
return BT_SetLogEchoMode(m_iHandle, dwLogEchoMode);
}
/// Clear log file.
BOOL Clear(void) const {
return BT_ClearLog(m_iHandle);
}
/// Insert entry into the beginning of custom log file.
BOOL InsertF(BUGTRAP_LOGLEVEL eLogLevel, LPCTSTR pszFormat, ...) const {
va_list argList;
va_start(argList, pszFormat);
BOOL bResult = BT_InsLogEntryV(m_iHandle, eLogLevel, pszFormat, argList);
va_end(argList);
return bResult;
}
/// Insert entry into the beginning of custom log file.
BOOL InsertF(LPCTSTR pszFormat, ...) const {
va_list argList;
va_start(argList, pszFormat);
BOOL bResult = BT_InsLogEntryV(m_iHandle, m_eDefaultLogLevel, pszFormat, argList);
va_end(argList);
return bResult;
}
/// Insert entry into the beginning of custom log file.
BOOL InsertV(BUGTRAP_LOGLEVEL eLogLevel, LPCTSTR pszFormat, va_list argList) const {
return BT_InsLogEntryV(m_iHandle, eLogLevel, pszFormat, argList);
}
/// Insert entry into the beginning of custom log file.
BOOL InsertV(LPCTSTR pszFormat, va_list argList) const {
return BT_InsLogEntryV(m_iHandle, m_eDefaultLogLevel, pszFormat, argList);
}
/// Insert entry into the beginning of custom log file.
BOOL Insert(BUGTRAP_LOGLEVEL eLogLevel, LPCTSTR pszEntry) const {
return BT_InsLogEntry(m_iHandle, eLogLevel, pszEntry);
}
/// Insert entry into the beginning of custom log file.
BOOL Insert(LPCTSTR pszEntry) const {
return BT_InsLogEntry(m_iHandle, m_eDefaultLogLevel, pszEntry);
}
/// Append entry to the end of custom log file.
BOOL AppendF(BUGTRAP_LOGLEVEL eLogLevel, LPCTSTR pszFormat, ...) const {
va_list argList;
va_start(argList, pszFormat);
BOOL bResult = BT_AppLogEntryV(m_iHandle, eLogLevel, pszFormat, argList);
va_end(argList);
return bResult;
}
/// Append entry to the end of custom log file.
BOOL AppendF(LPCTSTR pszFormat, ...) const {
va_list argList;
va_start(argList, pszFormat);
BOOL bResult = BT_AppLogEntryV(m_iHandle, m_eDefaultLogLevel, pszFormat, argList);
va_end(argList);
return bResult;
}
/// Append entry to the end of custom log file.
BOOL AppendV(BUGTRAP_LOGLEVEL eLogLevel, LPCTSTR pszFormat, va_list argList) const {
return BT_AppLogEntryV(m_iHandle, eLogLevel, pszFormat, argList);
}
/// Append entry to the end of custom log file.
BOOL AppendV(LPCTSTR pszFormat, va_list argList) const {
return BT_AppLogEntryV(m_iHandle, m_eDefaultLogLevel, pszFormat, argList);
}
/// Append entry to the end of custom log file.
BOOL Append(BUGTRAP_LOGLEVEL eLogLevel, LPCTSTR pszEntry) const {
return BT_AppLogEntry(m_iHandle, eLogLevel, pszEntry);
}
/// Append entry to the end of custom log file.
BOOL Append(LPCTSTR pszEntry) const {
return BT_AppLogEntry(m_iHandle, m_eDefaultLogLevel, pszEntry);
}
private:
/// Prevent object from being accidentally copied.
BTTrace(const BTTrace& rTrace);
/// Prevent object from being accidentally copied.
BTTrace& operator=(const BTTrace& rTrace);
/// Log file handle.
INT_PTR m_iHandle;
/// Default log level.
BUGTRAP_LOGLEVEL m_eDefaultLogLevel;
};
#endif // _BTTRACE_H_