filesession.h
上传用户:zslianheng
上传日期:2013-04-03
资源大小:946k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Visual C++

  1. /***************************************************************************
  2.  *                                                                         *
  3.  *   This program is free software; you can redistribute it and/or modify  *
  4.  *   it under the terms of the GNU General Public License as published by  *
  5.  *   the Free Software Foundation; either version 2 of the License, or     *
  6.  *   (at your option) any later version.                                   *
  7.  *                                                                         *
  8.  *   copyright            : (C) 2002 by Zhang Yong                         *
  9.  *   email                : z-yong163@163.com                              *
  10.  ***************************************************************************/
  11. #ifndef _FILE_SESSION_H
  12. #define _FILE_SESSION_H
  13. #include "tcpsessionbase.h"
  14. #include "icqlinkbase.h"
  15. class FileSessionListener {
  16. public:
  17. virtual const char *getPathName(const char *name, uint32 size) = 0;
  18. virtual void onFileReceive() = 0;
  19. virtual void onFileProgress(uint32 bytes) = 0;
  20. virtual void onFileFinished() = 0;
  21. };
  22. class FileSession : public TcpSessionListener {
  23. public:
  24. FileSession(TcpSessionBase *s);
  25. ~FileSession();
  26. IcqLinkBase *getLink() {
  27. return tcp->getLink();
  28. }
  29. uint32 getUIN() {
  30. return tcp->getRemoteUIN();
  31. }
  32. void setListener(FileSessionListener *l) {
  33. listener = l;
  34. }
  35. void sendFileInfo(const char *path, const char *name, uint32 size);
  36. bool isSend;
  37. private:
  38. virtual bool onPacketReceived(InPacket &);
  39. virtual void onSend();
  40. virtual void onClose();
  41. void onFileInfo(InPacket &in);
  42. void onFileReceive(InPacket &in);
  43. void onFileData(InPacket &in);
  44. TcpSessionBase *tcp;
  45. FileSessionListener *listener;
  46. FILE *file;
  47. uint32 fileSize;
  48. uint32 bytesSent;
  49. };
  50. #endif