CircleBuff.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #pragma once
  2. #include <map>
  3. #include <vector>
  4. #include <string>
  5. using namespace std;
  6. #include "CcosLock.h"
  7. typedef struct _BlockId {
  8. DWORD Offset;
  9. DWORD Size;
  10. _BlockId()
  11. {
  12. Offset = 0;
  13. Size = 0;
  14. };
  15. ~_BlockId()
  16. {
  17. };
  18. }BLOCKID;
  19. typedef struct _LogFileStatus {
  20. _LogFileStatus()
  21. {
  22. InitStatus = false;
  23. MaxFileSize = 1024*1024*10;
  24. MaxBackupCount = 0;
  25. MaxTimePeriod = 0;
  26. };
  27. ~_LogFileStatus()
  28. {
  29. };
  30. bool InitStatus;
  31. size_t MaxFileSize;//log file size limit.def:10M
  32. size_t MaxBackupCount;//log file count limit.def:
  33. size_t MaxTimePeriod;//by day
  34. }LOGFILESTATUS;
  35. class BlockInfo
  36. {
  37. public:
  38. BlockInfo(){
  39. m_TotalSize = 0;
  40. m_FileName = "";
  41. };
  42. virtual ~BlockInfo(){
  43. };
  44. DWORD m_TotalSize;
  45. string m_FileName;
  46. LOGFILESTATUS m_FileStatus;
  47. vector<BLOCKID> m_Block;
  48. };
  49. //the sequance of lock is blockmap -> circlebuff
  50. class CircleBuff : public CcosLock
  51. {
  52. public:
  53. char *m_pBuff;
  54. DWORD m_TotalSize;
  55. DWORD m_UsedSize;
  56. DWORD m_BasePos;
  57. DWORD m_HeadPos;
  58. CircleBuff();
  59. virtual ~CircleBuff();
  60. bool SetCacheSize(DWORD Size);
  61. DWORD AddContext(const char *pContext,DWORD Size);
  62. bool CopyContext(char *pContext, DWORD ContextSize, DWORD Offset, DWORD OffsetSize);
  63. };
  64. extern CircleBuff g_Circle;
  65. class BlockMap : public CcosLock
  66. {
  67. DWORD m_FileIdx;
  68. public:
  69. map<DWORD, BlockInfo> m_Block;
  70. BlockMap();
  71. virtual ~BlockMap();
  72. void ClearMapInfo();
  73. bool ChangeFilePath(DWORD FileId, const char *pFilePath);
  74. DWORD CreateLogFile(const char *pFilePath);
  75. bool WriteLogFile(DWORD Id, LOGFILESTATUS &Pattern, const char *pContext, DWORD size);
  76. };
  77. extern BlockMap g_BlockMap;