MailStruct.h
上传用户:weimei12
上传日期:2022-08-11
资源大小:185k
文件大小:2k
源码类别:

Email客户端

开发平台:

Visual C++

  1. /********************************************************************
  2. created: 2009:1:6   17:48
  3. author: 李欣
  4. filename: e:MyProjectFileStoreFileStoreMailFile.h
  5. classname:  CMailFile
  6. purpose: struct definitions
  7. *********************************************************************/
  8. #pragma once
  9. const UINT MAIL_CLUSTER_CAPACITY = 128;//the capacity of the cluster that can contain the heaps
  10. const UINT MAIL_HEAP_CAPACITY = 64;//the capacity of the heap that can contain the blocks
  11. const UINT MAIL_BLOCK_SIZE = 1024 * 1024;//the size of one data block
  12. //the identity to identify whether a heap has been used
  13. #define FLAG_NO_USE 0
  14. #define FLAG_IS_USE 1
  15. //the version information for further use
  16. #define SZ_MAILFILE_IDENTITY _T("MAILFILE")
  17. #define CUR_MAILFILE_VERSION 0x10000
  18. typedef UINT MAILFILEPOS;
  19. ///<summary>
  20. ///   the file header
  21. ///</summary>
  22. struct FILE_STORE_CLASSEXT SMailFileHeader
  23. {
  24. UINT m_nHeadSize; //the size of the header
  25. BYTE m_byReserve[32];
  26. TCHAR m_szIdentity[8]; //the identity of the file, = _T("MAILFILE")
  27. UINT m_nVersion; //the version of the file
  28.  
  29. MAILFILEPOS m_mailClusterHeadPos; //the cluster position
  30. MAILFILEPOS m_endFilePos; // the end of the file
  31. };
  32. ///<summary>
  33. ///   a top level structure that contains heaps
  34. ///</summary>
  35. struct FILE_STORE_CLASSEXT SMailCluster
  36. {
  37. UINT     m_nMailBlockSize; //the size of each block
  38. UINT m_nUseHeapCount; //the count of the heaps used
  39. MAILFILEPOS m_nextClusterPos; //the position of the next cluster, if there is need for further use
  40. MAILFILEPOS m_HeapPos[MAIL_CLUSTER_CAPACITY];//the position of each heap
  41. };
  42. ///<summary>
  43. ///   it consists of blocks, while many heaps comprise a cluster 
  44. ///</summary>
  45. struct FILE_STORE_CLASSEXT SDataHeap
  46. {
  47. MAILFILEPOS m_blockDataStartPos;    //the start position of the real data block
  48. BYTE m_UseFlags[MAIL_HEAP_CAPACITY];//the flags to identify the blocks used
  49. };
  50. ///<summary>
  51. ///   a class that encapsulates SMailCluster to make better use of it
  52. ///</summary>
  53. class FILE_STORE_CLASSEXT CDataCluster
  54. {
  55. public:
  56. CDataCluster();
  57. virtual ~CDataCluster();
  58. SMailCluster m_dataCluster;
  59. MAILFILEPOS m_selfFilePos; // the position of the m_dataCluster
  60. SDataHeap* m_pDataHeaps; //the heaps that m_dataCluster contains
  61. CDataCluster* m_pNextDataCluster;//the position of the next cluster, if there is need for further use
  62. };