mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-08-13 21:52:30 +00:00
* 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:
+10
-1
@@ -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
@@ -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], [
|
||||
|
||||
@@ -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)));
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -76,7 +76,7 @@ private:
|
||||
|
||||
void receive_snub_peer();
|
||||
|
||||
inline void updated_itr();
|
||||
void updated_itr();
|
||||
|
||||
core::Download* m_download;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user