* Use HashString for hash and id which contains the 20 byte array

directly, instead of using std::string.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@799 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
rakshasa
2006-10-31 11:20:31 +00:00
parent c9d8a2406d
commit 9d465de7e1
11 changed files with 46 additions and 21 deletions
+10 -1
View File
@@ -265,7 +265,7 @@ transform_hex(InputIterator first1, InputIterator last1, OutputIterator first2,
}
template <typename Sequence>
Sequence
inline Sequence
transform_hex(const Sequence& src) {
Sequence dest;
transform_hex(src.begin(), src.end(), std::back_inserter(dest));
@@ -273,6 +273,15 @@ transform_hex(const Sequence& src) {
return dest;
}
template <typename Iterator>
inline std::string
transform_hex(Iterator first, Iterator last) {
std::string dest;
transform_hex(first, last, std::back_inserter(dest));
return dest;
}
template <typename Sequence>
Sequence
generate_random(size_t length) {
+18 -8
View File
@@ -58,23 +58,33 @@ AC_DEFUN([CC_ATTRIBUTE_INTERNAL], [
fi
])
AC_DEFUN([CC_ATTRIBUTE_DEFAULT], [
AC_DEFUN([CC_ATTRIBUTE_VISIBILITY], [
AC_LANG_PUSH(C++)
tmp_CXXFLAGS=$CXXFLAGS
CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
AC_CACHE_CHECK([if compiler supports __attribute__((visibility("default")))],
[cc_cv_attribute_default],
[cc_cv_attribute_visibility],
[AC_COMPILE_IFELSE([
void __attribute__((visibility("default"))) default_function() { }
void __attribute__((visibility("default"))) visibility_function() { }
],
[cc_cv_attribute_default=yes],
[cc_cv_attribute_default=no])
[cc_cv_attribute_visibility=yes],
[cc_cv_attribute_visibility=no])
])
if test "x$cc_cv_attribute_default" = "xyes"; then
AC_DEFINE([SUPPORT_ATTRIBUTE_DEFAULT], 1, [Define this if the compiler supports the default visibility attribute])
CXXFLAGS=$tmp_CXXFLAGS
AC_LANG_POP(C++)
if test "x$cc_cv_attribute_visibility" = "xyes"; then
AC_DEFINE([SUPPORT_ATTRIBUTE_VISIBILITY], 1, [Define this if the compiler supports the visibility attributes.])
CXXFLAGS="$CXXFLAGS -fvisibility=hidden"
$1
else
true
true
$2
fi
])
AC_DEFUN([CC_ATTRIBUTE_NONNULL], [
+1 -1
View File
@@ -92,7 +92,7 @@ Download::Download(download_type d) :
m_variables.insert("directory", new utils::VariableStringSlot(rak::mem_fn(&m_fileList, &torrent::FileList::root_dir), rak::mem_fn(this, &Download::set_root_directory)));
m_variables.insert("info_hash", new utils::VariableStringSlot(rak::mem_fn(&m_download, &torrent::Download::info_hash), NULL));
// m_variables.insert("info_hash", new utils::VariableStringSlot(rak::mem_fn(&m_download, &torrent::Download::info_hash), NULL));
m_variables.insert("min_peers", new utils::VariableValueSlot(rak::mem_fn(&m_download, &download_type::peers_min), rak::mem_fn(&m_download, &download_type::set_peers_min)));
m_variables.insert("max_peers", new utils::VariableValueSlot(rak::mem_fn(&m_download, &download_type::peers_max), rak::mem_fn(&m_download, &download_type::set_peers_max)));
+1
View File
@@ -41,6 +41,7 @@
#include <sigc++/connection.h>
#include <torrent/download.h>
#include <torrent/file_list.h>
#include <torrent/hash_string.h>
#include <torrent/tracker_list.h>
#include <torrent/torrent.h>
+1 -1
View File
@@ -174,7 +174,7 @@ DownloadStore::is_correct_format(std::string f) {
std::string
DownloadStore::create_filename(Download* d) {
return m_path + rak::transform_hex(d->download()->info_hash()) + ".torrent";
return m_path + rak::transform_hex(d->download()->info_hash().begin(), d->download()->info_hash().end()) + ".torrent";
}
}
+7 -5
View File
@@ -107,7 +107,7 @@ receive_tracker_dump(const std::string& url, const char* data, size_t size) {
}
void
Manager::handshake_log(const sockaddr* sa, torrent::ConnectionManager::HandshakeMessage msg, int err, std::string hash) {
Manager::handshake_log(const sockaddr* sa, torrent::ConnectionManager::HandshakeMessage msg, int err, const torrent::HashString* hash) {
if (!control->variable()->get_value("handshake_log"))
return;
@@ -115,6 +115,7 @@ Manager::handshake_log(const sockaddr* sa, torrent::ConnectionManager::Handshake
std::string download;
const rak::socket_address* socketAddress = rak::socket_address::cast_from(sa);
if (socketAddress->is_valid()) {
char port[6];
snprintf(port, sizeof(port), "%d", socketAddress->port());
@@ -123,10 +124,11 @@ Manager::handshake_log(const sockaddr* sa, torrent::ConnectionManager::Handshake
peer = "(unknown)";
}
torrent::Download d = torrent::download_find(hash);
if (d.is_valid())
download = ": " + d.name();
else
// torrent::Download d = torrent::download_find(hash);
// if (d.is_valid())
// download = ": " + d.name();
// else
download = "";
switch (msg) {
+1 -1
View File
@@ -98,7 +98,7 @@ public:
void push_log(const std::string& msg) { m_logImportant.push_front(msg); m_logComplete.push_front(msg); }
void handshake_log(const sockaddr* sa, torrent::ConnectionManager::HandshakeMessage msg, int err, std::string hash);
void handshake_log(const sockaddr* sa, torrent::ConnectionManager::HandshakeMessage msg, int err, const torrent::HashString* hash);
// Temporary, find a better place for this.
void try_create_download(const std::string& uri, bool start, bool printLog = true, bool tied = false);
+2
View File
@@ -40,6 +40,7 @@
#include <string>
#include <vector>
#include <inttypes.h>
#include <torrent/hash_string.h>
namespace display {
@@ -70,6 +71,7 @@ public:
// Fix this...
std::string str(const char* id) const;
std::string str_str(const std::string& id) const { return str(id.c_str()); }
std::string hash_str(const torrent::HashString& id) const { return str(id.c_str()); }
size_type sizeof_key(Type t) const {
switch (t) {
+1 -1
View File
@@ -138,7 +138,7 @@ WindowPeerList::redraw() {
x += 7;
char buf[128];
control->client_info()->print(buf, buf + 128, p.id().c_str());
control->client_info()->print(buf, buf + 128, p.id().data());
m_canvas->print(x, y, "%s", buf);
+3 -2
View File
@@ -39,6 +39,7 @@
#include <sigc++/bind.h>
#include <torrent/exceptions.h>
#include <torrent/rate.h>
#include <torrent/hash_string.h>
#include "display/client_info.h"
#include "display/frame.h"
@@ -106,7 +107,7 @@ ElementPeerList::create_info() {
display::text_element_value_slot(rak::on(std::mem_fun(&torrent::Peer::address), std::ptr_fun(&te_port))));
element->push_column("Id:", display::text_element_string_slot(std::mem_fun(&torrent::Peer::id), string_base::flag_escape_html));
element->push_column("Client:", display::text_element_string_slot(rak::on(std::mem_fun(&torrent::Peer::id), rak::make_mem_fun(control->client_info(), &display::ClientInfo::str_str))));
element->push_column("Client:", display::text_element_string_slot(rak::on(std::mem_fun(&torrent::Peer::id), rak::make_mem_fun(control->client_info(), &display::ClientInfo::hash_str))));
element->push_column("Options:", display::text_element_string_slot(std::mem_fun(&torrent::Peer::options), string_base::flag_escape_hex | string_base::flag_fixed_width, 0, 8));
element->push_column("Connected:", display::text_element_branch(std::mem_fun(&torrent::Peer::is_incoming), te_string("incoming"), te_string("outgoing")));
element->push_column("Encrypted:", display::text_element_branch3(std::mem_fun(&torrent::Peer::is_encrypted), te_string("yes"), std::mem_fun(&torrent::Peer::is_obfuscated), te_string("handshake"), te_string("no")));
@@ -249,7 +250,7 @@ ElementPeerList::receive_snub_peer() {
updated_itr();
}
inline void
void
ElementPeerList::updated_itr() {
m_windowList->mark_dirty();
m_elementInfo->set_object(m_listItr != m_list.end() ? &*m_listItr : NULL);
+1 -1
View File
@@ -76,7 +76,7 @@ private:
void receive_snub_peer();
inline void updated_itr();
void updated_itr();
core::Download* m_download;