00001
00002
00003
00004
00005 #pragma once
00006 #include "vmsbtsession.h"
00007 #include "vmsBtDownloadImpl.h"
00008
00009 class vmsBtSessionImpl : public vmsBtSession
00010 {
00011 public:
00012 void RestoreDownloadHandle (vmsBtDownloadImpl* dld);
00013 void ListenOn (int portFrom, int portTo);
00014 BOOL IsListening ();
00015 USHORT get_ListenPort ();
00016 vmsBtDownload* CreateDownload (vmsBtFile *torrent, LPCSTR pszOutputPath, LPBYTE pbFastResumeData, DWORD dwFRDataSize, BOOL bCompactMode);
00017 void SetDownloadLimit (int limit);
00018 void SetUploadLimit (int limit);
00019 void SetMaxUploads (int limit);
00020 void DeleteDownload (vmsBtDownload*);
00021 void DHT_start (LPBYTE pbState, DWORD dwStateSize);
00022 void DHT_stop ();
00023 BOOL DHT_getState (LPBYTE pbBuffer, DWORD dwBufferSize, LPDWORD pdwDataSize);
00024 BOOL DHT_isStarted ();
00025 void set_EventsHandler (fntBtSessionEventsHandler pfn, LPVOID pData);
00026 void SetProxySettings (LPCSTR pszIp, int nPort, LPCSTR pszUser, LPCSTR pszPwd);
00027 int get_TotalDownloadConnectionCount ();
00028 int get_DownloadCount ();
00029 vmsBtDownload* get_Download (int nIndex);
00030 int get_TotalDownloadSpeed ();
00031 int get_TotalUploadSpeed ();
00032 UINT64 get_TotalDownloadedByteCount ();
00033 UINT64 get_TotalUploadedByteCount ();
00034 void SetUserAgent (LPCSTR pszUA);
00035
00036 static vmsBtSessionImpl* Instance ();
00037 vmsBtSessionImpl(void);
00038 public:
00039 virtual ~vmsBtSessionImpl(void);
00040
00041 public:
00042 session m_session;
00043
00044 protected:
00045 static DWORD WINAPI _threadSession (LPVOID lp);
00046 bool m_bThreadRunning, m_bNeedStop;
00047 BOOL m_bDHTstarted;
00048 fntBtSessionEventsHandler m_pfnEvHandler;
00049 LPVOID m_pEvData;
00050 int FindDownloadIndex (const torrent_handle &h);
00051
00052 std::vector <vmsBtDownloadImpl*> m_vDownloads;
00053 CRITICAL_SECTION m_csRestoreTorrentHandle;
00054 CRITICAL_SECTION m_csDeleteDownload;
00055 };