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

Email客户端

开发平台:

Visual C++

  1. /********************************************************************
  2. created: 2009:2:19   16:05
  3. author: 李欣
  4. filename: e:MyProjectSimpleMailFileStoreFileStoreMailDatabase.h
  5. classname:  CMailDatabase
  6. purpose: the database to store the mails
  7. *********************************************************************/
  8. #pragma once
  9. class FILE_STORE_CLASSEXT CMailTmpFile
  10. {
  11. public:
  12. CMailTmpFile(void);
  13. ~CMailTmpFile(void);
  14. ///<summary>
  15. ///   Open a file to save mails
  16. ///</summary>
  17. ///<param name = szFileName>
  18. ///   the file name
  19. ///</param>
  20. ///<param name = bCanWrite>
  21. ///   whether the file can be written
  22. ///</param>
  23. BOOL Open(IN LPCTSTR szFileName, IN BOOL bCanWrite);
  24. ///<summary>
  25. ///   Create an empty temporary file at first
  26. ///</summary>
  27. ///<param name = szFileName>
  28. ///   the file name
  29. ///</param>
  30. BOOL CreateEmptyFile(IN LPCTSTR szFileName);
  31. ///<summary>
  32. ///   close the file to save the mails
  33. ///</summary>
  34. ///<param name = bRealClose>
  35. ///   whether to close the file actually, or just leave it open for further use
  36. ///</param>
  37. void CloseFile(BOOL bRealClose);
  38. ///<summary>
  39. ///   read the specified block
  40. ///</summary>
  41. ///<param name = nBlockIndex>
  42. ///   the index of the block to be read
  43. ///</param>
  44. ///<param name = nLen>
  45. ///   the length of the pBuf
  46. ///</param>
  47. ///<param name = pBuf>
  48. ///   the buffer for storing the mail
  49. ///</param>
  50. BOOL ReadMailBlock(IN const UINT nBlockIndex, IN const UINT nLen, OUT void* pBuf);
  51. ///<summary>
  52. ///   write the specified block
  53. ///</summary>
  54. ///<param name = nBlockIndex>
  55. ///   the index of the block to be written
  56. ///</param>
  57. ///<param name = pBuf>
  58. ///   the buffer for storing the mail
  59. ///</param>
  60. ///<param name = nLen>
  61. ///   the length of the pBuf
  62. ///</param>
  63. BOOL WriteMailBlock(IN const UINT nBlockIndex, IN void* pBuf, IN const UINT nLen);
  64. ///<summary>
  65. ///   apply specified number of blocks to save the mails
  66. ///</summary>
  67. ///<param name = nCount>
  68. ///   the count of blocks to be applied
  69. ///</param>
  70. ///<param name = nStartBlockIndex>
  71. ///   the start index of the blocks to be applied
  72. ///</param>
  73. /// <returns>
  74. ///    the start index of the blocks to be applied
  75. /// </returns>
  76. UINT ApplyMailBlocks(IN const UINT nCount,IN const UINT nStartBlockIndex = 0);
  77. ///<summary>
  78. ///   release the specified blocks that will not be used
  79. ///</summary>
  80. ///<param name = nStartBlockIndex>
  81. ///   the start index of the blocks to be applied
  82. ///</param>
  83. ///<param name = nCount>
  84. ///   the count of blocks to be applied
  85. ///</param>
  86. BOOL ReleaseMailBlocks(IN const UINT nStartIndex, IN const UINT nCount);
  87. private:
  88. ///<summary>
  89. ///   Test if the file to save mails has been opened
  90. ///</summary>
  91. BOOL IsOpened();
  92. ///<summary>
  93. ///   load the mails from the file
  94. ///</summary>
  95. BOOL LoadFromTmpFile();
  96. ///<summary>
  97. ///   load the mails from the specified cluster
  98. ///</summary>
  99. ///<param name = filePos>
  100. ///   the start position of the cluster
  101. ///</param>
  102. BOOL LoadMailCluster(IN MAILFILEPOS filePos/*, CDataCluster* pParentMailCluster*/);
  103. ///<summary>
  104. ///   reopen the file if it is closed
  105. ///</summary>
  106. BOOL ReOpenFile();
  107. ///<summary>
  108. ///   the header of the file
  109. ///</summary>
  110. SMailFileHeader m_fileHeader;
  111. ///<summary>
  112. ///   a pointer of the cluster, it's only one cluster now
  113. ///</summary>
  114. CDataCluster* m_pMailCluster;
  115. ///<summary>
  116. ///   the pointer to the temporary file
  117. ///</summary>
  118. CFile* m_pTmpFile;
  119. ///<summary>
  120. ///   the temporary file name
  121. ///</summary>
  122. CString m_strFileName;
  123. ///<summary>
  124. ///   whether the file can be written
  125. ///</summary>
  126. BOOL m_bOpenToWrite;
  127. };