mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-16 06:06:16 +00:00
Added timestamp helper commands.
This commit is contained in:
+20
-3
@@ -495,6 +495,19 @@ download_get_variable(core::Download* download, const char* first_key, const cha
|
|||||||
return download->bencode()->get_key(first_key).get_key(second_key);
|
return download->bencode()->get_key(first_key).get_key(second_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
torrent::Object
|
||||||
|
download_get_value_or_zero(core::Download* download, const char* first_key, const char* second_key = NULL) {
|
||||||
|
auto object = download_get_variable(download, first_key, second_key);
|
||||||
|
|
||||||
|
if (object.is_empty())
|
||||||
|
return int64_t(0);
|
||||||
|
|
||||||
|
if (!object.is_value())
|
||||||
|
throw torrent::bencode_error("Download variable is not a value.");
|
||||||
|
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
torrent::Object
|
torrent::Object
|
||||||
download_set_variable(core::Download* download, const torrent::Object& rawArgs, const char* first_key, const char* second_key = NULL) {
|
download_set_variable(core::Download* download, const torrent::Object& rawArgs, const char* first_key, const char* second_key = NULL) {
|
||||||
if (second_key == NULL)
|
if (second_key == NULL)
|
||||||
@@ -600,12 +613,16 @@ d_list_remove(core::Download* download, const torrent::Object& rawArgs, const ch
|
|||||||
|
|
||||||
#define CMD2_DL_TIMESTAMP(key, first_key, second_key) \
|
#define CMD2_DL_TIMESTAMP(key, first_key, second_key) \
|
||||||
CMD2_DL(key, std::bind(&download_get_variable, std::placeholders::_1, first_key, second_key)); \
|
CMD2_DL(key, std::bind(&download_get_variable, std::placeholders::_1, first_key, second_key)); \
|
||||||
CMD2_DL_VALUE_P(key ".set", std::bind(&download_set_variable_value, \
|
CMD2_DL_VALUE_P(key ".set", std::bind(&download_set_variable_value, \
|
||||||
std::placeholders::_1, std::placeholders::_2, \
|
std::placeholders::_1, std::placeholders::_2, \
|
||||||
first_key, second_key)); \
|
first_key, second_key)); \
|
||||||
CMD2_DL_VALUE_P(key ".set_if_z", std::bind(&download_set_variable_value_ifz, \
|
CMD2_DL_VALUE_P(key ".set_if_z", std::bind(&download_set_variable_value_ifz, \
|
||||||
std::placeholders::_1, std::placeholders::_2, \
|
std::placeholders::_1, std::placeholders::_2, \
|
||||||
first_key, second_key)); \
|
first_key, second_key)); \
|
||||||
|
CMD2_DL(key ".or_zero", [](core::Download* download, auto) { \
|
||||||
|
return download_get_value_or_zero(download, first_key, second_key); }); \
|
||||||
|
CMD2_DL_VALUE(key ".elapsed", [](core::Download* download, auto value) { \
|
||||||
|
return download_get_value_or_zero(download, first_key, second_key).as_value() > value; });
|
||||||
|
|
||||||
#define CMD2_DL_VAR_STRING(key, first_key, second_key) \
|
#define CMD2_DL_VAR_STRING(key, first_key, second_key) \
|
||||||
CMD2_DL(key, std::bind(&download_get_variable, std::placeholders::_1, first_key, second_key)); \
|
CMD2_DL(key, std::bind(&download_get_variable, std::placeholders::_1, first_key, second_key)); \
|
||||||
|
|||||||
Reference in New Issue
Block a user