/usr/include/libktorrent/tracker/tracker.h is in libktorrent-dev 1.3.1-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | /***************************************************************************
* Copyright (C) 2005 by Joris Guisson *
* joris.guisson@gmail.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#ifndef BTTRACKER_H
#define BTTRACKER_H
#include <kurl.h>
#include <util/sha1hash.h>
#include <interfaces/peersource.h>
#include <interfaces/trackerinterface.h>
#include <peer/peerid.h>
#include <ktorrent_export.h>
#include <QTimer>
class KUrl;
namespace bt
{
/**
Interface used by the Tracker to obtain the data it needs to know
when announcing.
*/
class KTORRENT_EXPORT TrackerDataSource
{
public:
virtual ~TrackerDataSource() {}
virtual Uint64 bytesDownloaded() const = 0;
virtual Uint64 bytesUploaded() const = 0;
virtual Uint64 bytesLeft() const = 0;
virtual const SHA1Hash & infoHash() const = 0;
virtual bool isPartialSeed() const = 0;
};
/**
* Base class for all tracker classes.
*/
class KTORRENT_EXPORT Tracker : public PeerSource,public TrackerInterface
{
Q_OBJECT
public:
Tracker(const KUrl & url,TrackerDataSource* tds,const PeerID & id,int tier);
virtual ~Tracker();
/**
* Set the custom IP
* @param str
*/
static void setCustomIP(const QString & str);
/// get the tracker url
KUrl trackerURL() const {return url;}
/**
* Delete the tracker in ms milliseconds, or when the stopDone signal is emitted.
* @param ms Number of ms to wait
*/
void timedDelete(int ms);
/**
* Get the number of failed attempts to reach a tracker.
* @return The number of failed attempts
*/
virtual Uint32 failureCount() const = 0;
/**
* Do a tracker scrape to get more accurate stats about a torrent.
* Does nothing if the tracker does not support this.
*/
virtual void scrape() = 0;
/// Get the trackers tier
int getTier() const {return tier;}
/// Get the custom ip to use, null if none is set
static QString getCustomIP();
/// Handle a failure
void handleFailure();
protected:
/// Reset the tracker stats
void resetTrackerStats();
/// Calculates the bytes downloaded to send with the request
Uint64 bytesDownloaded() const;
/// Calculates the bytes uploaded to send with the request
Uint64 bytesUploaded() const;
/// Emit the failure signal, and set the error
void failed(const QString & err);
public slots:
virtual void manualUpdate() = 0;
signals:
/**
* Emitted when an error happens.
* @param failure_reason The reason why we couldn't reach the tracker
*/
void requestFailed(const QString & failure_reason);
/**
* Emitted when a stop is done.
*/
void stopDone();
/**
* Emitted when a request to the tracker succeeded
*/
void requestOK();
/**
* A request to the tracker has been started.
*/
void requestPending();
/**
* Emitted when a scrape has finished
* */
void scrapeDone();
protected:
int tier;
PeerID peer_id;
TrackerDataSource* tds;
Uint32 key;
QTimer reannounce_timer;
Uint64 bytes_downloaded_at_start;
Uint64 bytes_uploaded_at_start;
};
}
#endif
|