Connection.h
上传用户:lds876
上传日期:2013-05-25
资源大小:567k
文件大小:2k
源码类别:

P2P编程

开发平台:

Visual C++

  1. // Connection.h: interface for the CConnection class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_CONNECTION_H__23CEED2C_4E50_4480_B2A1_D27433C01AFD__INCLUDED_)
  5. #define AFX_CONNECTION_H__23CEED2C_4E50_4480_B2A1_D27433C01AFD__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. // enum {CHOKE, UNCHOKE, INTERESTED, NOT_INTERESTED, HAVE, BITFIELD, REQUEST, PIECE, CANCEL};
  10. #define CHOKE 0
  11. #define UNCHOKE 1
  12. #define INTERESTED 2
  13. #define NOT_INTERESTED 3
  14. #define HAVE 4
  15. #define BITFIELD 5
  16. #define REQUEST 6
  17. #define PIECE 7
  18. #define CANCEL 8
  19. void booleans_to_bitfield(vector<bool>&vHave, memstream& memRet);
  20. bool bitfield_to_booleans(memstream& membitfield, long lNumPieces, vector<bool>& vHave);
  21. class CEncryptedConnection;
  22. class CConnector;
  23. class CSingleDownload;
  24. class CUpload;
  25. class CConnection  
  26. {
  27. public:
  28. CConnection(CEncryptedConnection* pEConnection, CConnector* pConnector);
  29. virtual ~CConnection();
  30. void send_interested();
  31. void send_not_interested();
  32. void send_choke();
  33. void send_unchoke();
  34. void send_request(long index, long begin, long length);
  35. void send_cancel(long index, long begin, long length);
  36. void send_piece(long index, long begin, memstream& piece);
  37. void send_bitfield(vector<bool>& vHave);
  38. void send_have(long index);
  39. void GetRate(long& lDownRate, long & lUpRate);
  40. string GetIP();
  41. bool GetIP(long& lAddr, short& sPort);
  42. memstream& GetID();
  43. bool IsFlush();
  44. bool is_locally_initiated();
  45. void Close();
  46. bool IsPause();
  47. void Pause(bool bPause);
  48. // data
  49. CEncryptedConnection* m_pEConnection;
  50. bool m_bGotAnything;
  51. CSingleDownload* m_pDownload;
  52. CUpload* m_pUpload;
  53. enum {eCount = 30};
  54. long m_lValueUp[eCount];
  55. long m_lValueDown[eCount];
  56. long m_lIndex;
  57. private:
  58. CConnector* m_pConnector;
  59. bool m_bPause;
  60. };
  61. #endif // !defined(AFX_CONNECTION_H__23CEED2C_4E50_4480_B2A1_D27433C01AFD__INCLUDED_)