RemoteInterface.h
上传用户:surprise9
上传日期:2007-01-04
资源大小:426k
文件大小:4k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // This is part of the WAR SOFTWARE SERIES initiated by Jarle Aase
  2. // Copyright 1996 by Jarle Aase. All rights reserved.
  3. // See the "War Software Series Licende Agreement" for details concerning 
  4. // use and distribution.
  5. // ---
  6. // This source code, executables and programs containing source code or
  7. // binaries or proprietetary technology from the War Software Series are
  8. // NOT alloed used, viewed or tested by any governmental agencies in
  9. // any countries. This includes the government, departments, police, 
  10. // military etc.
  11. // ---
  12. // This file is intended for use with Tab space = 2
  13. // Created and maintained in MSVC Developer Studio
  14. // ---
  15. // NAME : RemoteInterface.h
  16. // PURPOSE : General header file for all War Software that use WarClientLib.dll
  17. // PROGRAM : 
  18. // DATE : Nov. 9 1996
  19. // AUTHOR : Jarle Aase
  20. // ---
  21. // REVISION HISTORY
  22. // 
  23. ///////////////////////////////////////////////////////////////////////////////////////
  24. // Remote connection interface
  25. // One syncronous and one async return channel
  26. class CRemoteRequest
  27. {
  28. public:
  29. int m_Type;
  30. CCmdArgs *m_RequestQueue;
  31. CString m_Request;
  32. CString *m_ReplyBuf;
  33. CWnd *m_cWnd;
  34. int m_Msg;
  35. BOOL (* m_Func)(int nErrorCode, LPVOID ReplyBuf, LPVOID Arg);
  36. LPVOID m_FuncArg;
  37. CCriticalSection m_Lock;
  38. BOOL m_IsReleased;
  39. };
  40. enum // Request types
  41. {
  42. RQ_SINGLE,
  43. RQ_MULTIPLE,
  44. RQ_INVALID
  45. };
  46. class DLL_WAR_SOFTWARE_ CRemoteInterface : public CSock
  47. {
  48. public:
  49. CLinkedList m_RequestQueue;
  50. CString m_CurrentRequest;
  51. CString m_CurrentReply;
  52. int CurrentQueueIndex;
  53. CCmdArgs *CurrentRequestQueue;
  54. CCmdArgs *CurrentReplyQueue;
  55. CLinkedList CurrentServerReply;
  56. CLinkedList CurrentServerNotifications;
  57. CString m_InBuf;
  58. LPCSTR m_LastLineInBuf;
  59. CString m_OutBuf;
  60. CWarTimer m_ConnectionTimer;
  61. CString m_UserName;
  62. CString m_UserPwd;
  63. CString m_PreperedCommand; // Used to transfere the PORT command
  64. // Direct file download
  65. HANDLE m_FileHandle;
  66. DWORD m_BytesLeftToDownload;
  67. DWORD m_BytesToDownload;
  68. CString m_FileName; // Original file name
  69. CString m_TempFileName; // Real file name
  70. public:
  71. CRemoteInterface();
  72. ~CRemoteInterface();
  73. BOOL OpenRemote(LPCSTR Address, UINT Port, int Service, 
  74. LPCSTR UserName, LPCSTR UserPwd);
  75. virtual void OnOpen(int nErrorCode);
  76. BOOL Request(LPCSTR Request, CString &cReplyBuf, 
  77. CWnd *cWnd = NULL, int nMsg = 0, 
  78. BOOL (* Func)(int nErrorCode, LPVOID ReplyBuf, LPVOID Arg) = NULL,
  79. LPVOID Arg = NULL, HANDLE *CancelHndl = NULL);
  80. BOOL Request(CRemoteRequest *Req);
  81. virtual BOOL OnRequest(int nErrorCode, CRemoteRequest *Req);
  82. BOOL RequestMulti(CCmdArgs *RequestList, 
  83. CWnd *cWnd = NULL, int nMsg = 0, 
  84. BOOL (* Func)(int nErrorCode, LPVOID ReplyBuf, LPVOID Arg) = NULL,
  85. LPVOID Arg = NULL);
  86. virtual void OnRequestMulti(int nErrorCode, 
  87. CRemoteRequest *Req);
  88. virtual BOOL OnNotification(int nErrorCode, LPSTR Notification);
  89. static BOOL Req(HANDLE Remote, LPCSTR RequestText, 
  90. CString& ReplyBuf, int timeout = INFINITE);
  91. static BOOL ReqCallback(int nErrorCode, LPVOID ReplyBuf, 
  92. LPVOID Arg);
  93. BOOL CancelRequest(HANDLE h);
  94. BOOL Abort(); 
  95. // CSock overrides
  96. virtual void OnConnect( int nErrorCode );
  97. virtual void OnSend( int nErrorCode );
  98. virtual void OnReceive( int nErrorCode );
  99. virtual void OnClose( int nErrorCode );
  100. virtual void OnClientLogNotify(LPCSTR Text);
  101. protected:
  102. virtual BOOL NotifyRequest(int nErrorCode);
  103. virtual void OnServerMessage( int nErrorCode );
  104. BOOL ProcessRequest(int nErrorCode);
  105. BOOL DoSend();
  106. BOOL SendCmd(LPCSTR Format, ...);
  107. virtual BOOL _SendCmd(LPCSTR Command);
  108. };