www.pudn.com > GGBT.rar > Connection.h
// Connection.h: interface for the CConnection class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_CONNECTION_H__23CEED2C_4E50_4480_B2A1_D27433C01AFD__INCLUDED_)
#define AFX_CONNECTION_H__23CEED2C_4E50_4480_B2A1_D27433C01AFD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// enum {CHOKE, UNCHOKE, INTERESTED, NOT_INTERESTED, HAVE, BITFIELD, REQUEST, PIECE, CANCEL};
#define CHOKE 0
#define UNCHOKE 1
#define INTERESTED 2
#define NOT_INTERESTED 3
#define HAVE 4
#define BITFIELD 5
#define REQUEST 6
#define PIECE 7
#define CANCEL 8
void booleans_to_bitfield(vector&vHave, memstream& memRet);
bool bitfield_to_booleans(memstream& membitfield, long lNumPieces, vector& vHave);
class CEncryptedConnection;
class CConnector;
class CSingleDownload;
class CUpload;
class CConnection
{
public:
CConnection(CEncryptedConnection* pEConnection, CConnector* pConnector);
virtual ~CConnection();
void send_interested();
void send_not_interested();
void send_choke();
void send_unchoke();
void send_request(long index, long begin, long length);
void send_cancel(long index, long begin, long length);
void send_piece(long index, long begin, memstream& piece);
void send_bitfield(vector& vHave);
void send_have(long index);
void GetRate(long& lDownRate, long & lUpRate);
string GetIP();
bool GetIP(long& lAddr, short& sPort);
memstream& GetID();
bool IsFlush();
bool is_locally_initiated();
void Close();
bool IsPause();
void Pause(bool bPause);
// data
CEncryptedConnection* m_pEConnection;
bool m_bGotAnything;
CSingleDownload* m_pDownload;
CUpload* m_pUpload;
enum {eCount = 30};
long m_lValueUp[eCount];
long m_lValueDown[eCount];
long m_lIndex;
private:
CConnector* m_pConnector;
bool m_bPause;
};
#endif // !defined(AFX_CONNECTION_H__23CEED2C_4E50_4480_B2A1_D27433C01AFD__INCLUDED_)