// CTraceServer.h
|
|
#ifndef __CTRACESERVER_H
|
#define __CTRACESERVER_H
|
|
#include <stdio.h>
|
#include <string>
|
#include <list>
|
|
using namespace std;
|
|
#define MAX_TRACEFILE_SIZE (2*1024*1024)
|
#define NUM_TRACE_FILES 10
|
#define NUM_TRACE_BUFFERS 10000
|
#define TRACE_BUFFER_SIZE 256
|
#define TIMESTAMP_INTERVAL 1000
|
#define FLUSH_TIMEOUT 500
|
class CTraceServer {
|
public:
|
CTraceServer();
|
~CTraceServer();
|
int initialize();
|
int uninitialize();
|
DWORD getTraceThreadID();
|
int trace(char *traceBuffer);
|
char * getTraceBuffer();
|
private:
|
static DWORD WINAPI TraceThread(LPVOID pParams);
|
private:
|
string traceFileName;
|
int traceFileNumber;
|
int bufferMisses;
|
FILE *fpTraceFile;
|
bool initialized;
|
list<char *> bufferQ;
|
CRITICAL_SECTION m_csTraceMutex;
|
HANDLE traceThreadStartedEvent;
|
HANDLE traceThread;
|
DWORD traceThreadID;
|
DWORD doTraceThread();
|
void freeTraceBuffer(char *traceBuffer);
|
bool changeTraceFile();
|
bool openFirstTraceFile();
|
string makeTraceFileName(int traceFileNum);
|
void printTime();
|
};
|
|
#endif // __CTRACESERVER_H
|