Communicator.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:2k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2.  *  Openmysee
  3.  *
  4.  *  This program is free software; you can redistribute it and/or modify
  5.  *  it under the terms of the GNU General Public License as published by
  6.  *  the Free Software Foundation; either version 2 of the License, or
  7.  *  (at your option) any later version.
  8.  *
  9.  *  This program is distributed in the hope that it will be useful,
  10.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *  GNU General Public License for more details.
  13.  *
  14.  *  You should have received a copy of the GNU General Public License
  15.  *  along with this program; if not, write to the Free Software
  16.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17.  *
  18.  */
  19. #ifndef _COMMUNICATOR_H_
  20. #define _COMMUNICATOR_H_
  21. #include "BufferMgr.h"
  22. #include "TryClient.h"
  23. #include "CSClient.h"
  24. #include "P2PMgr.h"
  25. #include "LogMgr.h"
  26. #include "BaseResource.h"
  27. #include "LiveResource.h"
  28. #include "CriticalSection.h"
  29. #include "LocalPeerFinder.h"
  30. namespace NPLayer1 {
  31. #define POST_LOG_URL_LEN 512
  32. class Communicator {
  33. public:
  34. // 构造函数
  35. Communicator();
  36. // 析构函数
  37. virtual ~Communicator();
  38. // 初始化
  39. P2P_RETURN_TYPE Init(string trackerURL);
  40. // 开始下载资源
  41. P2P_RETURN_TYPE Request(
  42. const char* resname, // 资源名
  43. const char* hashcode, // 资源的Hash码
  44. const char* strSPList, // SuperPeer列表的IP地址
  45. float bitRate // 频道的码率
  46. );
  47. // 停止下载当前资源
  48. void StopCurrentRes();
  49. // 发送错误消息给外部程序
  50. void PostErrMessage(P2P_NOTIFY_TYPE type, LPARAM lParam, bool shouldStop);
  51. LiveResource* currRes; // 当前资源
  52. TryClient tryClient; // 尝试连接的线程
  53. CSClient csClient; // 与TrackerServer通信
  54. P2PMgr p2pMgr; // 管理下载
  55. BufferMgr g_bufferMgr; // 缓冲区管理
  56. LogMgr logFile; // 日志文件
  57. LocalPeerFinder localPeerFinder;    // 局域网Peer发现模块
  58. OSVERSIONINFOEX osvi; // 操作系统版本信息
  59. ConfigData cfgData; // 配置数据
  60. randctx ctx; // 随机数生成器
  61. NormalAddress trackerIP; // TrackServer的IP地址
  62. HWND noitfyWindow; // 接受错误消息的目标窗口
  63. UINT notifyCode; // 错误消息的代码
  64. UINT16 channelID; // 目标频道的ID,将和错误码拼合到wparam上
  65. UINT userID; // 登录到TS的用户名
  66. char userPass[MD5_LEN+1];// 登录到TS的密码
  67. P2PAddress localAddress; // 本机地址
  68. CriticalSection mainThreadLock; // 主线程的锁
  69. };
  70. }
  71. #endif //_COMMUNICATOR_H_