PageRenderTime 42ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/src/Modules/FileTransfer/FileTransferSocket.h

https://gitlab.com/yoage/TTWinClient
C Header | 92 lines | 60 code | 15 blank | 17 comment | 0 complexity | a01e6e7dacadfa1d63efcd0eb2c8cdff MD5 | raw file
Possible License(s): LGPL-3.0
  1. /*******************************************************************************
  2. * @file FileTransferSocket.h 2014\8\30 13:31:33 $
  3. * @author 快刀<kuaidao@mogujie.com>
  4. * @brief 文件传输socket
  5. ******************************************************************************/
  6. #ifndef FILETRANSFERSOCKET_612C0628_0BB6_4FF0_BE0F_F5DE2C35836D_H__
  7. #define FILETRANSFERSOCKET_612C0628_0BB6_4FF0_BE0F_F5DE2C35836D_H__
  8. #include "GlobalDefine.h"
  9. #include "TTLogic/IOperation.h"
  10. #include "TTLogic/IEvent.h"
  11. #include "TTLogic/ITcpClientModule.h"
  12. /******************************************************************************/
  13. class CImPdu;
  14. class FileTransferSocket;
  15. class FileTransTaskBase;
  16. namespace logic
  17. {
  18. class TcpClientSocket;
  19. struct IOperation;
  20. struct ITimerEvent;
  21. }
  22. class PingFileSevTimer : public logic::ITimerEvent
  23. {
  24. public:
  25. PingFileSevTimer(FileTransferSocket* pTransSocket);
  26. virtual void process();
  27. virtual void release();
  28. private:
  29. FileTransferSocket* m_pFileTransSocket;
  30. };
  31. /**
  32. * The class <code>文件传输socket</code>
  33. *
  34. */
  35. class FileTransferSocket :public logic::ITcpClientSocketCallback
  36. {
  37. public:
  38. FileTransferSocket(std::string& taskId);
  39. ~FileTransferSocket(void);
  40. public:
  41. BOOL startFileTransLink();
  42. void stopfileTransLink();
  43. void sendPacket(CImPdu* pdu);
  44. private:
  45. //创建连接
  46. virtual BOOL create();
  47. virtual BOOL connect(const CString &linkaddr, UInt16 port);
  48. virtual BOOL shutdown();
  49. //心跳包
  50. virtual void startHeartbeat();
  51. virtual void stopHeartbeat();
  52. //回调接口
  53. virtual void registerCB(logic::ITcpClientSocketCallback *cb);
  54. virtual void unRegisterCB();
  55. virtual logic::ITcpClientSocketCallback* getCallback();
  56. virtual void onClose(int error);
  57. virtual void onReceiveData(const char* data, UInt32 size);
  58. virtual void onParseError();
  59. virtual void onConnectDone();
  60. private:
  61. /**@name 服务器端拆包*/
  62. //@{
  63. void _fileLoginResponse(CImPdu* pdu);
  64. void _filePullDataReqResponse(CImPdu* pdu);
  65. void _filePullDataRspResponse(CImPdu* pdu);
  66. void _fileState(CImPdu* pdu);
  67. //@}
  68. public:
  69. std::string m_sTaskId;
  70. private:
  71. logic::TcpClientSocket* m_pLinkSocket;
  72. PingFileSevTimer* m_pPingTimer;
  73. ITcpClientSocketCallback* m_Icallback;
  74. UInt32 m_progressRefreshMark;
  75. };
  76. /******************************************************************************/
  77. #endif// #define FILETRANSFERSOCKET_612C0628_0BB6_4FF0_BE0F_F5DE2C35836D_H__