#pragma once #include #include #include using namespace std; #include "CcosLock.h" typedef struct _BlockId { DWORD Offset; DWORD Size; _BlockId() { Offset = 0; Size = 0; }; ~_BlockId() { }; }BLOCKID; typedef struct _LogFileStatus { _LogFileStatus() { InitStatus = false; MaxFileSize = 1024*1024*10; MaxBackupCount = 0; MaxTimePeriod = 0; }; ~_LogFileStatus() { }; bool InitStatus; size_t MaxFileSize;//log file size limit.def:10M size_t MaxBackupCount;//log file count limit.def: size_t MaxTimePeriod;//by day }LOGFILESTATUS; class BlockInfo { public: BlockInfo(){ m_TotalSize = 0; m_FileName = ""; }; virtual ~BlockInfo(){ }; DWORD m_TotalSize; string m_FileName; LOGFILESTATUS m_FileStatus; vector m_Block; }; //the sequance of lock is blockmap -> circlebuff class CircleBuff : public CcosLock { public: char *m_pBuff; DWORD m_TotalSize; DWORD m_UsedSize; DWORD m_BasePos; DWORD m_HeadPos; CircleBuff(); virtual ~CircleBuff(); bool SetCacheSize(DWORD Size); DWORD AddContext(const char *pContext,DWORD Size); bool CopyContext(char *pContext, DWORD ContextSize, DWORD Offset, DWORD OffsetSize); }; extern CircleBuff g_Circle; class BlockMap : public CcosLock { DWORD m_FileIdx; public: map m_Block; BlockMap(); virtual ~BlockMap(); void ClearMapInfo(); bool ChangeFilePath(DWORD FileId, const char *pFilePath); DWORD CreateLogFile(const char *pFilePath); bool WriteLogFile(DWORD Id, LOGFILESTATUS &Pattern, const char *pContext, DWORD size); }; extern BlockMap g_BlockMap;