?? btcontent.h
字號:
#ifndef BTCONTENT_H#define BTCONTENT_H#include "def.h"#include <sys/types.h>#include <stdio.h>#include "bitfield.h"#include "btfiles.h"typedef struct _btcache{ u_int64_t bc_off; size_t bc_len; unsigned char bc_f_flush:1; unsigned char bc_f_reserved:7; time_t bc_last_timestamp; char *bc_buf; struct _btcache *bc_next;}BTCACHE;class btContent{ //METAINFO成員 char *m_announce; unsigned char *m_hash_table; unsigned char m_shake_buffer[68]; size_t m_hashtable_length; size_t m_piece_length; size_t m_npieces; time_t m_create_date, m_seed_timestamp, m_start_timestamp; u_int64_t m_left_bytes; btFiles m_btfiles; BTCACHE *m_cache; size_t m_cache_size, m_cache_used; void _Set_InfoHash(unsigned char buf[20]); char* _file2mem(const char *fname, size_t *psiz); void ReleaseHashTable(){ if(m_hash_table){ delete []m_hash_table; m_hash_table = (unsigned char*) 0; } } int CheckExist(); void CacheConfigure(); void CacheClean(); u_int64_t max_u_int64_t(u_int64_t a,u_int64_t b) { return (a > b) ? a : b; } u_int64_t min_u_int64_t(u_int64_t a,u_int64_t b) { return (a > b) ? b : a; } ssize_t CacheIO(char *buf, u_int64_t off, size_t len, int method); public: BitField *pBF; BitField *pBFilter; char *global_piece_buffer; btContent(); ~btContent(); void FlushCache(); int CreateMetainfoFile(const char *mifn); int InitialFromFS(const char *pathname, char *ann_url, size_t piece_length); int InitialFromMI(const char *metainfo_fname,const char *saveas); char* GetAnnounce() { return m_announce;} unsigned char* GetShakeBuffer() {return m_shake_buffer;} unsigned char* GetInfoHash() {return (m_shake_buffer + 28);} unsigned char* GetPeerId() {return (m_shake_buffer + 48); } size_t GetPieceLength(size_t idx); size_t GetPieceLength() const { return m_piece_length; } size_t GetNPieces() const { return m_npieces; } u_int64_t GetTotalFilesLength() const { return m_btfiles.GetTotalLength(); } u_int64_t GetLeftBytes() const { return m_left_bytes; } int APieceComplete(size_t idx); int GetHashValue(size_t idx,unsigned char *md); ssize_t ReadSlice(char *buf,size_t idx,size_t off,size_t len); ssize_t WriteSlice(char *buf,size_t idx,size_t off,size_t len); ssize_t ReadPiece(char *buf,size_t idx); int PrintOut(); int SeedTimeout(const time_t *pnow); void SetFilter(); void SetTmpFilter(int nfile, BitField *pFilter) { m_btfiles.SetFilter(nfile, pFilter, m_piece_length); } size_t getFilePieces(size_t nfile); BTFILE *GetNextFile(BTFILE *file) { return m_btfiles.GetNextFile(file); } time_t GetStartTime() { return m_start_timestamp; } time_t GetSeedTime() { return m_seed_timestamp; }};extern btContent BTCONTENT;#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -