⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 btcontent.h

📁 在嵌入linux-arm上运行的bt下载应用程序
💻 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 + -