forked from premiere/premiere-libtorrent
fix in DHT counters, alert types test, typos, formatting (#1747)
fix in DHT counters, alert types test, typos, formatting
This commit is contained in:
parent
23edbfbee8
commit
ee4d82d166
|
@ -396,7 +396,7 @@ namespace libtorrent
|
||||||
|
|
||||||
void dht_live_nodes(sha1_hash const& nid);
|
void dht_live_nodes(sha1_hash const& nid);
|
||||||
|
|
||||||
void dht_direct_request(udp::endpoint ep, entry& e
|
void dht_direct_request(udp::endpoint const& ep, entry& e
|
||||||
, void* userdata = nullptr);
|
, void* userdata = nullptr);
|
||||||
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
|
|
|
@ -455,7 +455,7 @@ namespace libtorrent
|
||||||
// with the response (if any) and the userdata pointer passed in here.
|
// with the response (if any) and the userdata pointer passed in here.
|
||||||
// Since this alert is a response to an explicit call, it will always be
|
// Since this alert is a response to an explicit call, it will always be
|
||||||
// posted, regardless of the alert mask.
|
// posted, regardless of the alert mask.
|
||||||
void dht_direct_request(udp::endpoint ep, entry const& e, void* userdata = nullptr);
|
void dht_direct_request(udp::endpoint const& ep, entry const& e, void* userdata = nullptr);
|
||||||
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
// deprecated in 0.15
|
// deprecated in 0.15
|
||||||
|
|
|
@ -31,15 +31,11 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <libtorrent/config.hpp>
|
#include <libtorrent/config.hpp>
|
||||||
#include <libtorrent/hasher.hpp>
|
|
||||||
#include <libtorrent/bdecode.hpp>
|
#include <libtorrent/bdecode.hpp>
|
||||||
#include <libtorrent/kademlia/get_item.hpp>
|
#include <libtorrent/kademlia/get_item.hpp>
|
||||||
#include <libtorrent/kademlia/node.hpp>
|
#include <libtorrent/kademlia/node.hpp>
|
||||||
#include <libtorrent/kademlia/dht_observer.hpp>
|
#include <libtorrent/kademlia/dht_observer.hpp>
|
||||||
|
#include <libtorrent/performance_counters.hpp>
|
||||||
#if TORRENT_USE_ASSERTS
|
|
||||||
#include <libtorrent/bencode.hpp>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace libtorrent { namespace dht
|
namespace libtorrent { namespace dht
|
||||||
{
|
{
|
||||||
|
@ -91,7 +87,7 @@ void get_item::got_data(bdecode_node const& v,
|
||||||
|
|
||||||
// for get_item, we should call callback when we get data,
|
// for get_item, we should call callback when we get data,
|
||||||
// even if the date is not authoritative, we can update later.
|
// even if the date is not authoritative, we can update later.
|
||||||
// so caller can get response ASAP without waitting transaction
|
// so caller can get response ASAP without waiting transaction
|
||||||
// time-out (15 seconds).
|
// time-out (15 seconds).
|
||||||
// for put_item, the callback function will do nothing
|
// for put_item, the callback function will do nothing
|
||||||
// if the data is non-authoritative.
|
// if the data is non-authoritative.
|
||||||
|
@ -146,6 +142,8 @@ bool get_item::invoke(observer_ptr o)
|
||||||
e["q"] = "get";
|
e["q"] = "get";
|
||||||
a["target"] = target().to_string();
|
a["target"] = target().to_string();
|
||||||
|
|
||||||
|
m_node.stats_counters().inc_stats_counter(counters::dht_get_out);
|
||||||
|
|
||||||
return m_node.m_rpc.invoke(e, o->target_ep(), o);
|
return m_node.m_rpc.invoke(e, o->target_ep(), o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include <libtorrent/kademlia/dht_observer.hpp>
|
#include <libtorrent/kademlia/dht_observer.hpp>
|
||||||
#include <libtorrent/kademlia/node.hpp>
|
#include <libtorrent/kademlia/node.hpp>
|
||||||
#include <libtorrent/io.hpp>
|
#include <libtorrent/io.hpp>
|
||||||
|
#include <libtorrent/performance_counters.hpp>
|
||||||
|
|
||||||
namespace libtorrent { namespace dht
|
namespace libtorrent { namespace dht
|
||||||
{
|
{
|
||||||
|
@ -85,8 +86,8 @@ bool put_data::invoke(observer_ptr o)
|
||||||
{
|
{
|
||||||
if (m_done) return false;
|
if (m_done) return false;
|
||||||
|
|
||||||
// TODO: what if o is not an isntance of put_data_observer? This need to be
|
// TODO: what if o is not an instance of put_data_observer? This need to be
|
||||||
// redesigned for better type saftey.
|
// redesigned for better type safety.
|
||||||
put_data_observer* po = static_cast<put_data_observer*>(o.get());
|
put_data_observer* po = static_cast<put_data_observer*>(o.get());
|
||||||
|
|
||||||
entry e;
|
entry e;
|
||||||
|
@ -106,6 +107,8 @@ bool put_data::invoke(observer_ptr o)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_node.stats_counters().inc_stats_counter(counters::dht_put_out);
|
||||||
|
|
||||||
return m_node.m_rpc.invoke(e, o->target_ep(), o);
|
return m_node.m_rpc.invoke(e, o->target_ep(), o);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace libtorrent
|
||||||
#ifndef BOOST_NO_EXCEPTIONS
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
try {
|
try {
|
||||||
#endif
|
#endif
|
||||||
(m_impl->*f)(a...);
|
(m_impl->*f)(std::forward<Args>(a)...);
|
||||||
#ifndef BOOST_NO_EXCEPTIONS
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
} catch (system_error const& e) {
|
} catch (system_error const& e) {
|
||||||
m_impl->alerts().emplace_alert<session_error_alert>(e.code(), e.what());
|
m_impl->alerts().emplace_alert<session_error_alert>(e.code(), e.what());
|
||||||
|
@ -81,12 +81,12 @@ namespace libtorrent
|
||||||
bool done = false;
|
bool done = false;
|
||||||
|
|
||||||
std::exception_ptr ex;
|
std::exception_ptr ex;
|
||||||
m_impl->get_io_service().dispatch([=,&done,&ex]() mutable
|
m_impl->get_io_service().dispatch([=, &done, &ex]() mutable
|
||||||
{
|
{
|
||||||
#ifndef BOOST_NO_EXCEPTIONS
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
try {
|
try {
|
||||||
#endif
|
#endif
|
||||||
(m_impl->*f)(a...);
|
(m_impl->*f)(std::forward<Args>(a)...);
|
||||||
#ifndef BOOST_NO_EXCEPTIONS
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
ex = std::current_exception();
|
ex = std::current_exception();
|
||||||
|
@ -110,12 +110,12 @@ namespace libtorrent
|
||||||
bool done = false;
|
bool done = false;
|
||||||
Ret r;
|
Ret r;
|
||||||
std::exception_ptr ex;
|
std::exception_ptr ex;
|
||||||
m_impl->get_io_service().dispatch([=,&r,&done,&ex]() mutable
|
m_impl->get_io_service().dispatch([=, &r, &done, &ex]() mutable
|
||||||
{
|
{
|
||||||
#ifndef BOOST_NO_EXCEPTIONS
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
try {
|
try {
|
||||||
#endif
|
#endif
|
||||||
r = (m_impl->*f)(a...);
|
r = (m_impl->*f)(std::forward<Args>(a)...);
|
||||||
#ifndef BOOST_NO_EXCEPTIONS
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
ex = std::current_exception();
|
ex = std::current_exception();
|
||||||
|
@ -610,7 +610,7 @@ namespace libtorrent
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_handle::dht_direct_request(udp::endpoint ep, entry const& e, void* userdata)
|
void session_handle::dht_direct_request(udp::endpoint const& ep, entry const& e, void* userdata)
|
||||||
{
|
{
|
||||||
#ifndef TORRENT_DISABLE_DHT
|
#ifndef TORRENT_DISABLE_DHT
|
||||||
entry copy = e;
|
entry copy = e;
|
||||||
|
|
|
@ -5838,7 +5838,7 @@ namespace aux {
|
||||||
m_alerts.emplace_alert<dht_live_nodes_alert>(nid, nodes);
|
m_alerts.emplace_alert<dht_live_nodes_alert>(nid, nodes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void session_impl::dht_direct_request(udp::endpoint ep, entry& e, void* userdata)
|
void session_impl::dht_direct_request(udp::endpoint const& ep, entry& e, void* userdata)
|
||||||
{
|
{
|
||||||
if (!m_dht) return;
|
if (!m_dht) return;
|
||||||
m_dht->direct_request(ep, e, std::bind(&on_direct_response, std::ref(m_alerts), userdata, _1));
|
m_dht->direct_request(ep, e, std::bind(&on_direct_response, std::ref(m_alerts), userdata, _1));
|
||||||
|
|
|
@ -39,6 +39,21 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
using namespace libtorrent;
|
using namespace libtorrent;
|
||||||
|
|
||||||
|
TORRENT_TEST(alerts_types)
|
||||||
|
{
|
||||||
|
#define TEST_ALERT_TYPE(name, seq, prio) \
|
||||||
|
TEST_EQUAL(name::priority, prio); \
|
||||||
|
TEST_EQUAL(name::alert_type, seq);
|
||||||
|
|
||||||
|
TEST_ALERT_TYPE(dht_get_peers_reply_alert, 87, 0);
|
||||||
|
TEST_ALERT_TYPE(session_error_alert, 90, 0);
|
||||||
|
TEST_ALERT_TYPE(dht_live_nodes_alert, 91, 0);
|
||||||
|
|
||||||
|
#undef TEST_ALERT_TYPE
|
||||||
|
|
||||||
|
TEST_EQUAL(num_alert_types, 92);
|
||||||
|
}
|
||||||
|
|
||||||
TORRENT_TEST(dht_get_peers_reply_alert)
|
TORRENT_TEST(dht_get_peers_reply_alert)
|
||||||
{
|
{
|
||||||
alert_manager mgr(1, dht_get_peers_reply_alert::static_category);
|
alert_manager mgr(1, dht_get_peers_reply_alert::static_category);
|
||||||
|
|
|
@ -195,7 +195,7 @@ TORRENT_TEST(test_assign2)
|
||||||
bitfield test1;
|
bitfield test1;
|
||||||
for (int i = 0; i < 4; ++i)
|
for (int i = 0; i < 4; ++i)
|
||||||
{
|
{
|
||||||
memset(&b[i], 0xff, 5);
|
std::memset(&b[i], 0xff, 5);
|
||||||
b[i + 5] = char(0xc0);
|
b[i + 5] = char(0xc0);
|
||||||
test1.assign(&b[i], 32 + 8 + 2);
|
test1.assign(&b[i], 32 + 8 + 2);
|
||||||
print_bitfield(test1);
|
print_bitfield(test1);
|
||||||
|
@ -402,4 +402,4 @@ TORRENT_TEST(not_initialized_resize)
|
||||||
bitfield test2(0);
|
bitfield test2(0);
|
||||||
test2.resize(8);
|
test2.resize(8);
|
||||||
TEST_EQUAL(test2.size(), 8);
|
TEST_EQUAL(test2.size(), 8);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2437,7 +2437,7 @@ TORRENT_TEST(traversal_done)
|
||||||
std::array<node_entry, 9> nodes = build_nodes(target);
|
std::array<node_entry, 9> nodes = build_nodes(target);
|
||||||
|
|
||||||
// invert the ith most significant byte so that the test nodes are
|
// invert the ith most significant byte so that the test nodes are
|
||||||
// progressivly closer to the target item
|
// progressively closer to the target item
|
||||||
for (int i = 0; i < num_test_nodes; ++i)
|
for (int i = 0; i < num_test_nodes; ++i)
|
||||||
nodes[i].id[i] = ~nodes[i].id[i];
|
nodes[i].id[i] = ~nodes[i].id[i];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue