// CTraceServer.h #ifndef __CTRACESERVER_H #define __CTRACESERVER_H #include #include #include 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 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