FileQueue.h
上传用户:tjfeida
上传日期:2013-03-10
资源大小:1917k
文件大小:4k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // FileQueue.h: interface for the CFileQueue class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_FILEQUEUE_H__B42073D4_CC80_41D1_BF14_AA3246344119__INCLUDED_)
  5. #define AFX_FILEQUEUE_H__B42073D4_CC80_41D1_BF14_AA3246344119__INCLUDED_
  6. /*********************************************
  7. **该文件是属于WolfFTP工程中的。如果有什么问题
  8. **请联系
  9. **         tablejiang@21cn.com
  10. **或者访问
  11. **         http://wolfftp.51.net
  12. **以得到最新的支持。
  13. *********************************************/
  14. #if _MSC_VER > 1000
  15. #pragma once
  16. #endif // _MSC_VER > 1000
  17. #include "share.h"
  18. #include "Winsock.h"
  19. //////////////////////////////////////////////////
  20. // Struct define //
  21. //////////////////////////////////////////////////
  22. typedef struct
  23. {
  24. char sitename[MAX_PATH] ; //this site name . 
  25. char host[50] ; // host machine ip address .
  26. UINT hosttype ; // the host OS type .
  27. /*
  28. 0 : Auto-Detect .
  29. 1 : UNIX .
  30. 2 : Windows NT .
  31. 3 : ...
  32. */
  33. char user[50] ; // username 
  34. char pass[50] ; // password
  35. char remotepath[MAX_PATH] ; //Initial remote path .
  36. char localpath[MAX_PATH] ;  //Initial local path .
  37. UINT logintype ; //user login type .
  38. /*
  39. 0 : Normal login . need user(name) and pass(word).
  40. 1 : Anonymous login . needn't username and password .
  41. */
  42. UINT transfertype ;
  43. /*
  44. 0 : Auto-Detect .
  45. 1 : ASCII .
  46. 2 : Binary .
  47. */
  48. BOOL brokendownload ;
  49. /*
  50. Is this host suppost broken continue transf
  51. */
  52. }SITEINFO ;
  53. #define FILE_STATE_READY 0
  54. #define FILE_STATE_ERROR 1
  55. #define FILE_STATE_STOP 2
  56. #define FILE_STATE_RUNNING 3
  57. #define FILE_STATE_PAUSE 4
  58. struct FTPFILEINFO
  59. {
  60. SITEINFO site ;
  61. char remotepath[MAX_PATH] ;
  62. char remotefilename[MAX_PATH] ;
  63. char localpath[MAX_PATH] ;
  64. char localfilename[MAX_PATH] ;
  65. __int64 startpos ;
  66. __int64 endpos ;
  67. __int64 filesize;
  68. char filetime[50] ;
  69. HWND hWnd ;
  70. SOCKET hSocket ;
  71. BOOL bfileput ;
  72. BOOL bIsDirectory ;
  73. UINT state ;
  74. /*
  75. 0 : ready .
  76. 1 : error .
  77. 2 : stop .
  78. */
  79. int iExistAction ;
  80. FTPFILEINFO* pNext ;
  81. };
  82. /***********************************************************
  83. ** @Description:
  84. ** this class is used for store the transmit file info.
  85. ** Because this file queue will be readed by multithread , 
  86. ** so the critical section technique is used in this class .
  87. ** And the file queue is a single chain .
  88. **
  89. ** @Note:
  90. ** Interface function :
  91. **
  92. ** addItem() : add a delete file to queue
  93. ** DeleteItem( ) : delete a file from queue .
  94. ** DeleteAllItem( ) : delete all files of queue .
  95. ** IsInFileQueue( ) : is specify file in this file queue .
  96. ** IsEmpty( ) : file queue is empty .
  97. ** GetNextItem( ) : Get next useful item .
  98. **
  99. **
  100. ** @Author :Table.JHM.太子
  101. ** e-mail:  tablejiang@21cn.com
  102. ** Date:  2001 4 10
  103. *************************************************************/
  104. class CFileQueue  
  105. {
  106. public:
  107. CFileQueue();
  108. virtual ~CFileQueue();
  109. public:
  110. BOOL SetSaveFileName( LPCTSTR filename );
  111. FTPFILEINFO* GetSameSiteFile( FTPFILEINFO* pFile );
  112. void UnLockTheFileList( );
  113. void LockTheFileList( );
  114. BOOL SetItemState( int iState , FTPFILEINFO* pFileInfo );
  115. FTPFILEINFO* GetNextItem( );
  116. BOOL IsEmpty( );
  117. BOOL DeleteAllFileQueue( );
  118. BOOL IsInFileQueue( FTPFILEINFO* pFileInfo );
  119. BOOL DeleteItem( FTPFILEINFO* pFileInfo );
  120. BOOL AddItem( FTPFILEINFO* pFileInfo );
  121. FTPFILEINFO* m_pFileTransmitQueue ;
  122. protected:
  123. BOOL FtpFileCmp( FTPFILEINFO * pItem1 , FTPFILEINFO * pItem2 );
  124. BOOL LoadQueue( );
  125. BOOL SaveQueue( );
  126. CRITICAL_SECTION m_cs ; //let thread can read the queue mutex
  127. BOOL m_bLetRun ;
  128. char m_SaveFileName[MAX_PATH] ; //the file queue save local file name..
  129. public:
  130. HWND m_hParentWnd ; //if file queue change ,we use this 
  131. //handle notify parent window.
  132. };
  133. #endif // !defined(AFX_FILEQUEUE_H__B42073D4_CC80_41D1_BF14_AA3246344119__INCLUDED_)