/usr/include/libktorrent/dht/key.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 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | /***************************************************************************
* 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 DHTKEY_H
#define DHTKEY_H
#include <QByteArray>
#include <util/sha1hash.h>
#include <ktorrent_export.h>
namespace dht
{
/**
* @author Joris Guisson
* @brief Key in the distributed hash table
*
* Key's in the distributed hash table are just SHA-1 hashes.
* Key provides all necesarry operators to be used as a value.
*/
class KTORRENT_EXPORT Key : public bt::SHA1Hash
{
public:
/**
* Constructor, sets key to 0.
*/
Key();
/**
* Copy constructor. Seeing that Key doesn't add any data
* we just pass a SHA1Hash, Key's are automatically covered by this
* @param k Hash to copy
*/
Key(const bt::SHA1Hash & k);
/**
* Make a key out of a bytearray
* @param ba The QByteArray
*/
Key(const QByteArray & ba);
/**
* Make a key out of a 20 byte array.
* @param d The array
*/
Key(const bt::Uint8* d);
/// Destructor.
virtual ~Key();
/**
* Create a random key.
* @return A random Key
*/
static Key random();
/// Get the minimum key (all zeros)
static Key min();
/// Get the maximum key (all FF)
static Key max();
/**
* Equality operator.
* @param other The key to compare
* @return true if this key is equal to other
*/
bool operator == (const Key & other) const;
/**
* Inequality operator.
* @param other The key to compare
* @return true if this key is not equal to other
*/
bool operator != (const Key & other) const;
/**
* Smaller then operator.
* @param other The key to compare
* @return rue if this key is smaller then other
*/
bool operator < (const Key & other) const;
/**
* Smaller then or equal operator.
* @param other The key to compare
* @return rue if this key is smaller then or equal to other
*/
bool operator <= (const Key & other) const;
/**
* Greater then operator.
* @param other The key to compare
* @return rue if this key is greater then other
*/
bool operator > (const Key & other) const;
/**
* Greater then or equal operator.
* @param other The key to compare
* @return rue if this key is greater then or equal to other
*/
bool operator >= (const Key & other) const;
/**
* Divide by a number operator
*/
Key operator / (int value) const;
/**
* Addition for keys
* @param a The first key
* @param b The second key
*/
friend KTORRENT_EXPORT Key operator + (const Key & a, const Key & b);
/**
* Subtraction for keys
* @param a The first key
* @param b The second key
*/
friend KTORRENT_EXPORT Key operator - (const Key & a, const Key & b);
/**
* Addition for key and a value
* @param a The key
* @param b The value
*/
friend KTORRENT_EXPORT Key operator + (const Key & a, bt::Uint8 value);
/**
* The distance of two keys is the keys xor together.
* @param a The first key
* @param b The second key
* @return a xor b
*/
static Key distance(const Key & a, const Key & b);
/**
* Calculate the middle between two keys.
* @param a The first key
* @param b The second key
* @return The middle
*/
static Key mid(const Key & a, const Key & b);
};
}
#endif
|