forked from premiere/premiere-libtorrent
deprecate relative times in torrent_status, replaced by std::chrono::time_point
This commit is contained in:
parent
bba121d010
commit
c9333849e6
|
@ -1,3 +1,4 @@
|
||||||
|
* deprecate relative times in torrent_status, replaced by std::chrono::time_point
|
||||||
* refactor in alert types to use more const fields and more clear API
|
* refactor in alert types to use more const fields and more clear API
|
||||||
* changed session_stats_alert counters type to signed (std::int64_t)
|
* changed session_stats_alert counters type to signed (std::int64_t)
|
||||||
* remove torrent eviction/ghost torrent feature
|
* remove torrent eviction/ghost torrent feature
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include "libtorrent/socket.hpp"
|
#include "libtorrent/socket.hpp"
|
||||||
#include "libtorrent/address.hpp"
|
#include "libtorrent/address.hpp"
|
||||||
#include "libtorrent/error_code.hpp"
|
#include "libtorrent/error_code.hpp"
|
||||||
|
#include "libtorrent/time.hpp"
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
using namespace boost::python;
|
using namespace boost::python;
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "optional.hpp"
|
#include "optional.hpp"
|
||||||
#include <boost/version.hpp>
|
#include <boost/version.hpp>
|
||||||
#include "libtorrent/time.hpp"
|
#include "libtorrent/time.hpp"
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
using namespace boost::python;
|
using namespace boost::python;
|
||||||
namespace lt = libtorrent;
|
namespace lt = libtorrent;
|
||||||
|
@ -27,14 +28,16 @@ object import(str name)
|
||||||
object datetime_timedelta;
|
object datetime_timedelta;
|
||||||
object datetime_datetime;
|
object datetime_datetime;
|
||||||
|
|
||||||
struct chrono_time_duration_to_python
|
template <typename Duration>
|
||||||
|
struct chrono_duration_to_python
|
||||||
{
|
{
|
||||||
static PyObject* convert(lt::time_duration const& d)
|
static PyObject* convert(Duration const& d)
|
||||||
{
|
{
|
||||||
|
std::int64_t const us = lt::total_microseconds(d);
|
||||||
object result = datetime_timedelta(
|
object result = datetime_timedelta(
|
||||||
0 // days
|
0 // days
|
||||||
, 0 // seconds
|
, us / 1000000 // seconds
|
||||||
, lt::total_microseconds(d)
|
, us % 1000000 // microseconds
|
||||||
);
|
);
|
||||||
|
|
||||||
return incref(result.ptr());
|
return incref(result.ptr());
|
||||||
|
@ -55,6 +58,28 @@ struct time_duration_to_python
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct time_point_to_python
|
||||||
|
{
|
||||||
|
static PyObject* convert(lt::time_point pt)
|
||||||
|
{
|
||||||
|
using std::chrono::system_clock;
|
||||||
|
using std::chrono::duration_cast;
|
||||||
|
time_t const tm = system_clock::to_time_t(system_clock::now()
|
||||||
|
+ duration_cast<system_clock::duration>(pt - lt::clock_type::now()));
|
||||||
|
|
||||||
|
std::tm* date = std::gmtime(&tm);
|
||||||
|
object result = datetime_datetime(
|
||||||
|
(int)1900 + date->tm_year
|
||||||
|
, (int)date->tm_mon
|
||||||
|
, (int)date->tm_mday
|
||||||
|
, date->tm_hour
|
||||||
|
, date->tm_min
|
||||||
|
, date->tm_sec
|
||||||
|
);
|
||||||
|
return incref(result.ptr());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct ptime_to_python
|
struct ptime_to_python
|
||||||
{
|
{
|
||||||
static PyObject* convert(boost::posix_time::ptime const& pt)
|
static PyObject* convert(boost::posix_time::ptime const& pt)
|
||||||
|
@ -82,20 +107,20 @@ void bind_datetime()
|
||||||
datetime_timedelta = datetime["timedelta"];
|
datetime_timedelta = datetime["timedelta"];
|
||||||
datetime_datetime = datetime["datetime"];
|
datetime_datetime = datetime["datetime"];
|
||||||
|
|
||||||
to_python_converter<
|
to_python_converter<boost::posix_time::time_duration
|
||||||
boost::posix_time::time_duration
|
, time_duration_to_python>();
|
||||||
, time_duration_to_python
|
|
||||||
>();
|
|
||||||
|
|
||||||
to_python_converter<
|
to_python_converter<boost::posix_time::ptime
|
||||||
boost::posix_time::ptime
|
, ptime_to_python>();
|
||||||
, ptime_to_python
|
|
||||||
>();
|
|
||||||
|
|
||||||
to_python_converter<
|
to_python_converter<lt::time_point
|
||||||
lt::time_duration
|
, time_point_to_python>();
|
||||||
, chrono_time_duration_to_python
|
|
||||||
>();
|
to_python_converter<lt::time_duration
|
||||||
|
, chrono_duration_to_python<lt::time_duration>>();
|
||||||
|
|
||||||
|
to_python_converter<std::chrono::seconds
|
||||||
|
, chrono_duration_to_python<std::chrono::seconds>>();
|
||||||
|
|
||||||
optional_to_python<boost::posix_time::ptime>();
|
optional_to_python<boost::posix_time::ptime>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,8 @@ object bitfield_to_list(bitfield const& bf)
|
||||||
object pieces(torrent_status const& s) { return bitfield_to_list(s.pieces); }
|
object pieces(torrent_status const& s) { return bitfield_to_list(s.pieces); }
|
||||||
object verified_pieces(torrent_status const& s) { return bitfield_to_list(s.verified_pieces); }
|
object verified_pieces(torrent_status const& s) { return bitfield_to_list(s.verified_pieces); }
|
||||||
|
|
||||||
|
using by_value = return_value_policy<return_by_value>;
|
||||||
|
|
||||||
void bind_torrent_status()
|
void bind_torrent_status()
|
||||||
{
|
{
|
||||||
scope status = class_<torrent_status>("torrent_status")
|
scope status = class_<torrent_status>("torrent_status")
|
||||||
|
@ -36,19 +38,9 @@ void bind_torrent_status()
|
||||||
.def_readonly("has_metadata", &torrent_status::has_metadata)
|
.def_readonly("has_metadata", &torrent_status::has_metadata)
|
||||||
.def_readonly("progress", &torrent_status::progress)
|
.def_readonly("progress", &torrent_status::progress)
|
||||||
.def_readonly("progress_ppm", &torrent_status::progress_ppm)
|
.def_readonly("progress_ppm", &torrent_status::progress_ppm)
|
||||||
.add_property(
|
.add_property("next_announce", make_getter(&torrent_status::next_announce, by_value()))
|
||||||
"next_announce"
|
|
||||||
, make_getter(
|
|
||||||
&torrent_status::next_announce, return_value_policy<return_by_value>()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
.add_property(
|
.add_property("announce_interval", make_getter(&torrent_status::announce_interval, by_value()))
|
||||||
"announce_interval"
|
|
||||||
, make_getter(
|
|
||||||
&torrent_status::announce_interval, return_value_policy<return_by_value>()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
#endif
|
#endif
|
||||||
.def_readonly("current_tracker", &torrent_status::current_tracker)
|
.def_readonly("current_tracker", &torrent_status::current_tracker)
|
||||||
.def_readonly("total_download", &torrent_status::total_download)
|
.def_readonly("total_download", &torrent_status::total_download)
|
||||||
|
@ -87,19 +79,21 @@ void bind_torrent_status()
|
||||||
.def_readonly("down_bandwidth_queue", &torrent_status::down_bandwidth_queue)
|
.def_readonly("down_bandwidth_queue", &torrent_status::down_bandwidth_queue)
|
||||||
.def_readonly("all_time_upload", &torrent_status::all_time_upload)
|
.def_readonly("all_time_upload", &torrent_status::all_time_upload)
|
||||||
.def_readonly("all_time_download", &torrent_status::all_time_download)
|
.def_readonly("all_time_download", &torrent_status::all_time_download)
|
||||||
.def_readonly("active_time", &torrent_status::active_time)
|
|
||||||
.def_readonly("finished_time", &torrent_status::finished_time)
|
|
||||||
.def_readonly("seeding_time", &torrent_status::seeding_time)
|
|
||||||
.def_readonly("seed_rank", &torrent_status::seed_rank)
|
.def_readonly("seed_rank", &torrent_status::seed_rank)
|
||||||
.def_readonly("last_scrape", &torrent_status::last_scrape)
|
|
||||||
.def_readonly("has_incoming", &torrent_status::has_incoming)
|
.def_readonly("has_incoming", &torrent_status::has_incoming)
|
||||||
.def_readonly("seed_mode", &torrent_status::seed_mode)
|
.def_readonly("seed_mode", &torrent_status::seed_mode)
|
||||||
.def_readonly("upload_mode", &torrent_status::upload_mode)
|
.def_readonly("upload_mode", &torrent_status::upload_mode)
|
||||||
.def_readonly("share_mode", &torrent_status::share_mode)
|
.def_readonly("share_mode", &torrent_status::share_mode)
|
||||||
.def_readonly("super_seeding", &torrent_status::super_seeding)
|
.def_readonly("super_seeding", &torrent_status::super_seeding)
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
|
.def_readonly("active_time", &torrent_status::active_time)
|
||||||
|
.def_readonly("finished_time", &torrent_status::finished_time)
|
||||||
|
.def_readonly("seeding_time", &torrent_status::seeding_time)
|
||||||
|
.def_readonly("last_scrape", &torrent_status::last_scrape)
|
||||||
.def_readonly("error", &torrent_status::error)
|
.def_readonly("error", &torrent_status::error)
|
||||||
.def_readonly("priority", &torrent_status::priority)
|
.def_readonly("priority", &torrent_status::priority)
|
||||||
|
.def_readonly("time_since_upload", &torrent_status::time_since_upload)
|
||||||
|
.def_readonly("time_since_download", &torrent_status::time_since_download)
|
||||||
#endif
|
#endif
|
||||||
.def_readonly("errc", &torrent_status::errc)
|
.def_readonly("errc", &torrent_status::errc)
|
||||||
.def_readonly("error_file", &torrent_status::error_file)
|
.def_readonly("error_file", &torrent_status::error_file)
|
||||||
|
@ -108,8 +102,6 @@ void bind_torrent_status()
|
||||||
.def_readonly("added_time", &torrent_status::added_time)
|
.def_readonly("added_time", &torrent_status::added_time)
|
||||||
.def_readonly("completed_time", &torrent_status::completed_time)
|
.def_readonly("completed_time", &torrent_status::completed_time)
|
||||||
.def_readonly("last_seen_complete", &torrent_status::last_seen_complete)
|
.def_readonly("last_seen_complete", &torrent_status::last_seen_complete)
|
||||||
.def_readonly("time_since_upload", &torrent_status::time_since_upload)
|
|
||||||
.def_readonly("time_since_download", &torrent_status::time_since_download)
|
|
||||||
.def_readonly("queue_position", &torrent_status::queue_position)
|
.def_readonly("queue_position", &torrent_status::queue_position)
|
||||||
.def_readonly("need_save_resume", &torrent_status::need_save_resume)
|
.def_readonly("need_save_resume", &torrent_status::need_save_resume)
|
||||||
.def_readonly("ip_filter_applies", &torrent_status::ip_filter_applies)
|
.def_readonly("ip_filter_applies", &torrent_status::ip_filter_applies)
|
||||||
|
@ -121,6 +113,11 @@ void bind_torrent_status()
|
||||||
.def_readonly("announcing_to_lsd", &torrent_status::announcing_to_lsd)
|
.def_readonly("announcing_to_lsd", &torrent_status::announcing_to_lsd)
|
||||||
.def_readonly("announcing_to_dht", &torrent_status::announcing_to_dht)
|
.def_readonly("announcing_to_dht", &torrent_status::announcing_to_dht)
|
||||||
.def_readonly("info_hash", &torrent_status::info_hash)
|
.def_readonly("info_hash", &torrent_status::info_hash)
|
||||||
|
.add_property("last_upload", make_getter(&torrent_status::last_upload, by_value()))
|
||||||
|
.add_property("last_download", make_getter(&torrent_status::last_download, by_value()))
|
||||||
|
.add_property("active_duration", make_getter(&torrent_status::active_duration, by_value()))
|
||||||
|
.add_property("finished_duration", make_getter(&torrent_status::finished_duration, by_value()))
|
||||||
|
.add_property("seeding_duration", make_getter(&torrent_status::seeding_duration, by_value()))
|
||||||
;
|
;
|
||||||
|
|
||||||
enum_<torrent_status::state_t>("states")
|
enum_<torrent_status::state_t>("states")
|
||||||
|
|
|
@ -139,6 +139,9 @@ class test_alerts(unittest.TestCase):
|
||||||
print(st.distributed_copies)
|
print(st.distributed_copies)
|
||||||
print(st.paused)
|
print(st.paused)
|
||||||
print(st.info_hash)
|
print(st.info_hash)
|
||||||
|
print(st.seeding_duration)
|
||||||
|
print(st.last_upload)
|
||||||
|
print(st.last_download)
|
||||||
self.assertEqual(st.save_path, os.getcwd())
|
self.assertEqual(st.save_path, os.getcwd())
|
||||||
|
|
||||||
def test_pop_alerts(self):
|
def test_pop_alerts(self):
|
||||||
|
|
|
@ -69,14 +69,18 @@ namespace libtorrent
|
||||||
// this error code specifies what error occurred
|
// this error code specifies what error occurred
|
||||||
error_code last_error;
|
error_code last_error;
|
||||||
|
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
// returns the number of seconds to the next announce on this tracker.
|
// returns the number of seconds to the next announce on this tracker.
|
||||||
// ``min_announce_in()`` returns the number of seconds until we are
|
// ``min_announce_in()`` returns the number of seconds until we are
|
||||||
// allowed to force another tracker update with this tracker.
|
// allowed to force another tracker update with this tracker.
|
||||||
//
|
//
|
||||||
// If the last time this tracker was contacted failed, ``last_error`` is
|
// If the last time this tracker was contacted failed, ``last_error`` is
|
||||||
// the error code describing what error occurred.
|
// the error code describing what error occurred.
|
||||||
|
TORRENT_DEPRECATED
|
||||||
int next_announce_in() const;
|
int next_announce_in() const;
|
||||||
|
TORRENT_DEPRECATED
|
||||||
int min_announce_in() const;
|
int min_announce_in() const;
|
||||||
|
#endif
|
||||||
|
|
||||||
// the time of next tracker announce
|
// the time of next tracker announce
|
||||||
time_point next_announce = min_time();
|
time_point next_announce = min_time();
|
||||||
|
|
|
@ -979,6 +979,10 @@ namespace libtorrent
|
||||||
TORRENT_ASSERT(ret <= (std::numeric_limits<std::uint16_t>::max)());
|
TORRENT_ASSERT(ret <= (std::numeric_limits<std::uint16_t>::max)());
|
||||||
return static_cast<std::uint16_t>(ret);
|
return static_cast<std::uint16_t>(ret);
|
||||||
}
|
}
|
||||||
|
time_point session_start_time() const override
|
||||||
|
{
|
||||||
|
return m_created;
|
||||||
|
}
|
||||||
|
|
||||||
time_point m_last_tick;
|
time_point m_last_tick;
|
||||||
time_point m_last_second_tick;
|
time_point m_last_second_tick;
|
||||||
|
|
|
@ -37,6 +37,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "libtorrent/peer_id.hpp"
|
#include "libtorrent/peer_id.hpp"
|
||||||
#include "libtorrent/address.hpp"
|
#include "libtorrent/address.hpp"
|
||||||
#include "libtorrent/io_service.hpp"
|
#include "libtorrent/io_service.hpp"
|
||||||
|
#include "libtorrent/time.hpp"
|
||||||
#include "libtorrent/disk_buffer_holder.hpp"
|
#include "libtorrent/disk_buffer_holder.hpp"
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
@ -169,6 +170,7 @@ namespace libtorrent { namespace aux
|
||||||
virtual void ban_ip(address addr) = 0;
|
virtual void ban_ip(address addr) = 0;
|
||||||
|
|
||||||
virtual std::uint16_t session_time() const = 0;
|
virtual std::uint16_t session_time() const = 0;
|
||||||
|
virtual time_point session_start_time() const = 0;
|
||||||
|
|
||||||
virtual bool is_aborted() const = 0;
|
virtual bool is_aborted() const = 0;
|
||||||
virtual int num_uploads() const = 0;
|
virtual int num_uploads() const = 0;
|
||||||
|
|
|
@ -704,11 +704,6 @@ namespace libtorrent
|
||||||
void scrape_tracker(int idx, bool user_triggered);
|
void scrape_tracker(int idx, bool user_triggered);
|
||||||
void announce_with_tracker(std::uint8_t e
|
void announce_with_tracker(std::uint8_t e
|
||||||
= tracker_request::none);
|
= tracker_request::none);
|
||||||
int seconds_since_last_scrape() const
|
|
||||||
{
|
|
||||||
return m_last_scrape == (std::numeric_limits<std::int16_t>::min)()
|
|
||||||
? -1 : int(m_ses.session_time() - m_last_scrape);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_DHT
|
#ifndef TORRENT_DISABLE_DHT
|
||||||
void dht_announce();
|
void dht_announce();
|
||||||
|
@ -1609,10 +1604,12 @@ namespace libtorrent
|
||||||
// is optional and may be 0xffffff
|
// is optional and may be 0xffffff
|
||||||
unsigned int m_downloaded:24;
|
unsigned int m_downloaded:24;
|
||||||
|
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
// the timestamp of the last scrape request to one of the trackers in
|
// the timestamp of the last scrape request to one of the trackers in
|
||||||
// this torrent specified in session_time. This is signed because it must
|
// this torrent specified in session_time. This is signed because it must
|
||||||
// be able to represent time before the session started
|
// be able to represent time before the session started
|
||||||
std::int16_t m_last_scrape = (std::numeric_limits<std::int16_t>::min)();
|
std::int16_t m_last_scrape = (std::numeric_limits<std::int16_t>::min)();
|
||||||
|
#endif
|
||||||
|
|
||||||
// ----
|
// ----
|
||||||
|
|
||||||
|
|
|
@ -391,6 +391,12 @@ namespace libtorrent
|
||||||
int up_bandwidth_queue = 0;
|
int up_bandwidth_queue = 0;
|
||||||
int down_bandwidth_queue = 0;
|
int down_bandwidth_queue = 0;
|
||||||
|
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
|
// deprecated in 1.2
|
||||||
|
// use last_upload, last_download or
|
||||||
|
// seeding_duration, finished_duration and active_duration
|
||||||
|
// instead
|
||||||
|
|
||||||
// the number of seconds since any peer last uploaded from this torrent
|
// the number of seconds since any peer last uploaded from this torrent
|
||||||
// and the last time a downloaded piece passed the hash check,
|
// and the last time a downloaded piece passed the hash check,
|
||||||
// respectively. Note, when starting up a torrent that needs its files
|
// respectively. Note, when starting up a torrent that needs its files
|
||||||
|
@ -410,6 +416,13 @@ namespace libtorrent
|
||||||
int active_time = 0;
|
int active_time = 0;
|
||||||
int finished_time = 0;
|
int finished_time = 0;
|
||||||
int seeding_time = 0;
|
int seeding_time = 0;
|
||||||
|
#else
|
||||||
|
int deprecated_time_since_upload = 0;
|
||||||
|
int deprecated_time_since_download = 0;
|
||||||
|
int deprecated_active_time = 0;
|
||||||
|
int deprecated_finished_time = 0;
|
||||||
|
int deprecated_seeding_time = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
// A rank of how important it is to seed the torrent, it is used to
|
// A rank of how important it is to seed the torrent, it is used to
|
||||||
// determine which torrents to seed and which to queue. It is based on
|
// determine which torrents to seed and which to queue. It is based on
|
||||||
|
@ -417,9 +430,15 @@ namespace libtorrent
|
||||||
// see queuing_. Higher value means more important to seed
|
// see queuing_. Higher value means more important to seed
|
||||||
int seed_rank = 0;
|
int seed_rank = 0;
|
||||||
|
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
|
// deprecated in 1.2
|
||||||
|
|
||||||
// the number of seconds since this torrent acquired scrape data.
|
// the number of seconds since this torrent acquired scrape data.
|
||||||
// If it has never done that, this value is -1.
|
// If it has never done that, this value is -1.
|
||||||
int last_scrape = 0;
|
int last_scrape = 0;
|
||||||
|
#else
|
||||||
|
int deprecated_last_scrape = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
// the priority of this torrent
|
// the priority of this torrent
|
||||||
|
@ -527,6 +546,13 @@ namespace libtorrent
|
||||||
|
|
||||||
// the info-hash for this torrent
|
// the info-hash for this torrent
|
||||||
sha1_hash info_hash{nullptr};
|
sha1_hash info_hash{nullptr};
|
||||||
|
|
||||||
|
time_point last_upload;
|
||||||
|
time_point last_download;
|
||||||
|
|
||||||
|
seconds active_duration;
|
||||||
|
seconds finished_duration;
|
||||||
|
seconds seeding_duration;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,11 +70,13 @@ namespace libtorrent
|
||||||
|
|
||||||
announce_entry::~announce_entry() = default;
|
announce_entry::~announce_entry() = default;
|
||||||
|
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
int announce_entry::next_announce_in() const
|
int announce_entry::next_announce_in() const
|
||||||
{ return total_seconds(next_announce - aux::time_now()); }
|
{ return total_seconds(next_announce - aux::time_now()); }
|
||||||
|
|
||||||
int announce_entry::min_announce_in() const
|
int announce_entry::min_announce_in() const
|
||||||
{ return total_seconds(min_announce - aux::time_now()); }
|
{ return total_seconds(min_announce - aux::time_now()); }
|
||||||
|
#endif
|
||||||
|
|
||||||
void announce_entry::reset()
|
void announce_entry::reset()
|
||||||
{
|
{
|
||||||
|
|
|
@ -2875,7 +2875,9 @@ namespace libtorrent
|
||||||
void torrent::scrape_tracker(int idx, bool user_triggered)
|
void torrent::scrape_tracker(int idx, bool user_triggered)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(is_single_thread());
|
TORRENT_ASSERT(is_single_thread());
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
m_last_scrape = m_ses.session_time();
|
m_last_scrape = m_ses.session_time();
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_trackers.empty()) return;
|
if (m_trackers.empty()) return;
|
||||||
|
|
||||||
|
@ -3032,8 +3034,10 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
update_tracker_timer(now);
|
update_tracker_timer(now);
|
||||||
|
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
if (resp.complete >= 0 && resp.incomplete >= 0)
|
if (resp.complete >= 0 && resp.incomplete >= 0)
|
||||||
m_last_scrape = m_ses.session_time();
|
m_last_scrape = m_ses.session_time();
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_LOGGING
|
#ifndef TORRENT_DISABLE_LOGGING
|
||||||
if (should_log())
|
if (should_log())
|
||||||
|
@ -8438,7 +8442,9 @@ namespace libtorrent
|
||||||
|
|
||||||
m_last_upload = clamped_subtract_s16(m_last_upload, seconds);
|
m_last_upload = clamped_subtract_s16(m_last_upload, seconds);
|
||||||
m_last_download = clamped_subtract_s16(m_last_download, seconds);
|
m_last_download = clamped_subtract_s16(m_last_download, seconds);
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
m_last_scrape = clamped_subtract_s16(m_last_scrape, seconds);
|
m_last_scrape = clamped_subtract_s16(m_last_scrape, seconds);
|
||||||
|
#endif
|
||||||
|
|
||||||
m_last_saved_resume = clamped_subtract(m_last_saved_resume, seconds);
|
m_last_saved_resume = clamped_subtract(m_last_saved_resume, seconds);
|
||||||
m_upload_mode_time = clamped_subtract(m_upload_mode_time, seconds);
|
m_upload_mode_time = clamped_subtract(m_upload_mode_time, seconds);
|
||||||
|
@ -10713,8 +10719,10 @@ namespace libtorrent
|
||||||
st->added_time = m_added_time;
|
st->added_time = m_added_time;
|
||||||
st->completed_time = m_completed_time;
|
st->completed_time = m_completed_time;
|
||||||
|
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
st->last_scrape = m_last_scrape == (std::numeric_limits<std::int16_t>::min)() ? -1
|
st->last_scrape = m_last_scrape == (std::numeric_limits<std::int16_t>::min)() ? -1
|
||||||
: clamped_subtract(m_ses.session_time(), m_last_scrape);
|
: clamped_subtract(m_ses.session_time(), m_last_scrape);
|
||||||
|
#endif
|
||||||
|
|
||||||
st->share_mode = m_share_mode;
|
st->share_mode = m_share_mode;
|
||||||
st->upload_mode = m_upload_mode;
|
st->upload_mode = m_upload_mode;
|
||||||
|
@ -10744,13 +10752,23 @@ namespace libtorrent
|
||||||
st->all_time_download = m_total_downloaded;
|
st->all_time_download = m_total_downloaded;
|
||||||
|
|
||||||
// activity time
|
// activity time
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
st->finished_time = finished_time();
|
st->finished_time = finished_time();
|
||||||
st->active_time = active_time();
|
st->active_time = active_time();
|
||||||
st->seeding_time = seeding_time();
|
st->seeding_time = seeding_time();
|
||||||
|
|
||||||
st->time_since_upload = m_last_upload == (std::numeric_limits<std::int16_t>::min)() ? -1
|
st->time_since_upload = m_last_upload == (std::numeric_limits<std::int16_t>::min)() ? -1
|
||||||
: clamped_subtract(m_ses.session_time(), m_last_upload);
|
: clamped_subtract(m_ses.session_time(), m_last_upload);
|
||||||
st->time_since_download = m_last_download == (std::numeric_limits<std::int16_t>::min)() ? -1
|
st->time_since_download = m_last_download == (std::numeric_limits<std::int16_t>::min)() ? -1
|
||||||
: clamped_subtract(m_ses.session_time(), m_last_download);
|
: clamped_subtract(m_ses.session_time(), m_last_download);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
st->finished_duration = seconds{finished_time()};
|
||||||
|
st->active_duration = seconds{active_time()};
|
||||||
|
st->seeding_duration = seconds{seeding_time()};
|
||||||
|
|
||||||
|
st->last_upload = m_ses.session_start_time() + seconds(m_last_upload);
|
||||||
|
st->last_download = m_ses.session_start_time() + seconds(m_last_download);
|
||||||
|
|
||||||
st->storage_mode = static_cast<storage_mode_t>(m_storage_mode);
|
st->storage_mode = static_cast<storage_mode_t>(m_storage_mode);
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,11 @@ TORRENT_TEST(primitives)
|
||||||
for (int i = 0; i < 10; ++i)
|
for (int i = 0; i < 10; ++i)
|
||||||
{
|
{
|
||||||
ae.failed(tracker_backoff, 5);
|
ae.failed(tracker_backoff, 5);
|
||||||
int delay = ae.next_announce_in();
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
|
int const delay = ae.next_announce_in();
|
||||||
|
#else
|
||||||
|
int const delay = total_seconds(ae.next_announce - clock_type::now());
|
||||||
|
#endif
|
||||||
TEST_CHECK(delay > last);
|
TEST_CHECK(delay > last);
|
||||||
last = delay;
|
last = delay;
|
||||||
std::printf("%d, ", delay);
|
std::printf("%d, ", delay);
|
||||||
|
|
|
@ -189,11 +189,17 @@ void default_tests(torrent_status const& s)
|
||||||
// allow some slack in the time stamps since they are reported as
|
// allow some slack in the time stamps since they are reported as
|
||||||
// relative times. If the computer is busy while running the unit test
|
// relative times. If the computer is busy while running the unit test
|
||||||
// or running under valgrind it may take several seconds
|
// or running under valgrind it may take several seconds
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
TEST_CHECK(s.active_time >= 1339);
|
TEST_CHECK(s.active_time >= 1339);
|
||||||
TEST_CHECK(s.active_time < 1339 + 10);
|
TEST_CHECK(s.active_time < 1339 + 10);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
using lt::seconds;
|
||||||
|
TEST_CHECK(s.finished_duration< seconds(1352 + 2));
|
||||||
|
TEST_CHECK(s.seeding_duration < seconds(1340 + 2));
|
||||||
|
TEST_CHECK(s.active_duration >= seconds(1339));
|
||||||
|
TEST_CHECK(s.active_duration < seconds(1339 + 10));
|
||||||
|
|
||||||
TEST_CHECK(s.finished_time < 1352 + 2);
|
|
||||||
TEST_CHECK(s.seeding_time < 1340 + 2);
|
|
||||||
TEST_CHECK(s.added_time < 1347 + 2);
|
TEST_CHECK(s.added_time < 1347 + 2);
|
||||||
TEST_CHECK(s.completed_time < 1348 + 2);
|
TEST_CHECK(s.completed_time < 1348 + 2);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue