www.pudn.com > GGBT.rar > Connector.h
// Connector.h: interface for the CConnector class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_CONNECTOR_H__8E8443EF_9C62_41C9_947E_3AE7E12ABBC3__INCLUDED_)
#define AFX_CONNECTOR_H__8E8443EF_9C62_41C9_947E_3AE7E12ABBC3__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CConnection;
class CEncryptedConnection;
class CDownloader;
class CUploader;
class CStorageWrapper;
class CMeasure;
class CChoker;
class CAddrPort;
class CConnector
{
public:
CConnector(long lMaxUploadRate);
virtual ~CConnector();
void Create(CDownloader* pDownloader, CUploader* pUploader, CChoker* pchoker,
long lNumPieces, CStorageWrapper* pStorage, CMeasure* pUpTotalMeasure );
long how_many_connections();
void connection_flushed(CEncryptedConnection* pEConnection);
void connection_made(CEncryptedConnection* pEConnection);
void connection_lost(CEncryptedConnection* pEConnection);
void got_message(CEncryptedConnection* pEConnection, memstream& memMessage);
void _update_upload_rate(long lAmount);
bool IsRatecap();
void uncap();
void SetMaxUploadRate(long lMaxUploadRate);
void PausePeer(CAddrPort addrPort, bool bPause = true);
void ClosePeer(CAddrPort addrPort);
void OnIdle();
const CDownloader* const GetDownloader() const;
const CMeasure* const GetUpTotalMeasure() const;
vector m_connections;
private:
void _OnIdle(vector& vToPause, vector& vToContinue, vector& vToClose);
void check_endgame();
// data
CDownloader* m_pDownloader;
CUploader* m_pUploader;
CStorageWrapper* m_pStorage;
CMeasure* m_pUpTotalMeasure;
CChoker* m_pChoker;
long m_lNumPieces;
long m_lMaxUploadRate;
bool m_bEndgame;
bool m_bRateCapped;
time_t m_tTimeUntilUncap;
time_t m_tcap;
vector m_vToPause;
vector m_vToContinue;
vector m_vToClose;
CCriticalSection m_criticalSection;
};
#endif // !defined(AFX_CONNECTOR_H__8E8443EF_9C62_41C9_947E_3AE7E12ABBC3__INCLUDED_)