mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-19 15:46:17 +00:00
Added commands to update choke queue.
This commit is contained in:
+19
-3
@@ -88,6 +88,7 @@ AC_DEFUN([TORRENT_CHECK_KQUEUE], [
|
|||||||
[
|
[
|
||||||
AC_DEFINE(USE_KQUEUE, 1, Use kqueue.)
|
AC_DEFINE(USE_KQUEUE, 1, Use kqueue.)
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
|
TORRENT_CHECK_KQUEUE_SOCKET_ONLY
|
||||||
], [
|
], [
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
])
|
])
|
||||||
@@ -137,7 +138,6 @@ AC_DEFUN([TORRENT_WITH_KQUEUE], [
|
|||||||
[
|
[
|
||||||
if test "$withval" = "yes"; then
|
if test "$withval" = "yes"; then
|
||||||
TORRENT_CHECK_KQUEUE
|
TORRENT_CHECK_KQUEUE
|
||||||
TORRENT_CHECK_KQUEUE_SOCKET_ONLY
|
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
@@ -149,11 +149,9 @@ AC_DEFUN([TORRENT_WITHOUT_KQUEUE], [
|
|||||||
[
|
[
|
||||||
if test "$withval" = "yes"; then
|
if test "$withval" = "yes"; then
|
||||||
TORRENT_CHECK_KQUEUE
|
TORRENT_CHECK_KQUEUE
|
||||||
TORRENT_CHECK_KQUEUE_SOCKET_ONLY
|
|
||||||
fi
|
fi
|
||||||
], [
|
], [
|
||||||
TORRENT_CHECK_KQUEUE
|
TORRENT_CHECK_KQUEUE
|
||||||
TORRENT_CHECK_KQUEUE_SOCKET_ONLY
|
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
@@ -492,3 +490,21 @@ AC_DEFUN([TORRENT_CHECK_PTHREAD_SETNAME_NP], [
|
|||||||
])
|
])
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([TORRENT_DISABLE_PTHREAD_SETNAME_NP], [
|
||||||
|
AC_MSG_CHECKING([for pthread_setname_no])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(pthread-setname-np,
|
||||||
|
AC_HELP_STRING([--disable-pthread-setname-np], [disable pthread_setname_np]),
|
||||||
|
[
|
||||||
|
if test "$enableval" = "no"; then
|
||||||
|
AC_MSG_RESULT(disabled)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(checking)
|
||||||
|
TORRENT_CHECK_PTHREAD_SETNAME_NP
|
||||||
|
fi
|
||||||
|
], [
|
||||||
|
TORRENT_CHECK_PTHREAD_SETNAME_NP
|
||||||
|
]
|
||||||
|
)
|
||||||
|
])
|
||||||
|
|||||||
+42
-36
@@ -1,44 +1,9 @@
|
|||||||
// rTorrent - BitTorrent client
|
|
||||||
// Copyright (C) 2005-2011, Jari Sundell
|
|
||||||
//
|
|
||||||
// This program is free software; you can redistribute it and/or modify
|
|
||||||
// it under the terms of the GNU General Public License as published by
|
|
||||||
// the Free Software Foundation; either version 2 of the License, or
|
|
||||||
// (at your option) any later version.
|
|
||||||
//
|
|
||||||
// This program is distributed in the hope that it will be useful,
|
|
||||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
// GNU General Public License for more details.
|
|
||||||
//
|
|
||||||
// You should have received a copy of the GNU General Public License
|
|
||||||
// along with this program; if not, write to the Free Software
|
|
||||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
//
|
|
||||||
// In addition, as a special exception, the copyright holders give
|
|
||||||
// permission to link the code of portions of this program with the
|
|
||||||
// OpenSSL library under certain conditions as described in each
|
|
||||||
// individual source file, and distribute linked combinations
|
|
||||||
// including the two.
|
|
||||||
//
|
|
||||||
// You must obey the GNU General Public License in all respects for
|
|
||||||
// all of the code used other than OpenSSL. If you modify file(s)
|
|
||||||
// with this exception, you may extend this exception to your version
|
|
||||||
// of the file(s), but you are not obligated to do so. If you do not
|
|
||||||
// wish to do so, delete this exception statement from your version.
|
|
||||||
// If you delete this exception statement from all source files in the
|
|
||||||
// program, then also delete it here.
|
|
||||||
//
|
|
||||||
// Contact: Jari Sundell <jaris@ifi.uio.no>
|
|
||||||
//
|
|
||||||
// Skomakerveien 33
|
|
||||||
// 3185 Skoppum, NORWAY
|
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#include <torrent/download/resource_manager.h>
|
#include <torrent/download/resource_manager.h>
|
||||||
#include <torrent/download/choke_group.h>
|
#include <torrent/download/choke_group.h>
|
||||||
#include <torrent/download/choke_queue.h>
|
#include <torrent/download/choke_queue.h>
|
||||||
|
#include <torrent/utils/log.h>
|
||||||
#include <torrent/utils/option_strings.h>
|
#include <torrent/utils/option_strings.h>
|
||||||
|
|
||||||
#include "ui/root.h"
|
#include "ui/root.h"
|
||||||
@@ -52,6 +17,9 @@
|
|||||||
// For cg_d_group.
|
// For cg_d_group.
|
||||||
#include "core/download.h"
|
#include "core/download.h"
|
||||||
|
|
||||||
|
#define LT_LOG_SUBSYSTEM(log_fmt, ...) \
|
||||||
|
lt_log_print_subsystem(torrent::LOG_TORRENT_INFO, "choke_queue", log_fmt, __VA_ARGS__);
|
||||||
|
|
||||||
// A hack to allow testing of the new choke_group API without the
|
// A hack to allow testing of the new choke_group API without the
|
||||||
// working parts present.
|
// working parts present.
|
||||||
#define USE_CHOKE_GROUP 0
|
#define USE_CHOKE_GROUP 0
|
||||||
@@ -122,6 +90,22 @@ apply_cg_insert(const std::string& arg) {
|
|||||||
return torrent::Object();
|
return torrent::Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
torrent::Object
|
||||||
|
apply_cg_all_update_balance(bool is_up) {
|
||||||
|
LT_LOG_SUBSYSTEM("apply update balance: resource_manager is_up:%i", (int)is_up);
|
||||||
|
|
||||||
|
for (torrent::ResourceManager::group_iterator
|
||||||
|
itr = torrent::resource_manager()->group_begin(),
|
||||||
|
last = torrent::resource_manager()->group_end(); itr != last; itr++) {
|
||||||
|
if (is_up)
|
||||||
|
itr->up_queue()->balance();
|
||||||
|
else
|
||||||
|
itr->down_queue()->balance();
|
||||||
|
}
|
||||||
|
|
||||||
|
return torrent::Object();
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// The hacked version:
|
// The hacked version:
|
||||||
//
|
//
|
||||||
@@ -182,6 +166,11 @@ apply_cg_list() {
|
|||||||
return torrent::Object::from_list(result);
|
return torrent::Object::from_list(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
cg_get_can_unchoke(torrent::choke_queue* cq) {
|
||||||
|
return cq->max_unchoked_signed() - (int)cq->size_unchoked();
|
||||||
|
}
|
||||||
|
|
||||||
torrent::Object
|
torrent::Object
|
||||||
apply_cg_insert(const std::string& arg) {
|
apply_cg_insert(const std::string& arg) {
|
||||||
int64_t dummy;
|
int64_t dummy;
|
||||||
@@ -214,6 +203,20 @@ apply_cg_index_of(const std::string& arg) {
|
|||||||
return std::distance(cg_list_hack.begin(), itr);
|
return std::distance(cg_list_hack.begin(), itr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
torrent::Object
|
||||||
|
apply_cg_all_update_balance(bool is_up) {
|
||||||
|
LT_LOG_SUBSYSTEM("apply update balance: hack is_up:%i", (int)is_up);
|
||||||
|
|
||||||
|
for (auto itr : cg_list_hack) {
|
||||||
|
if (is_up)
|
||||||
|
itr->up_queue()->balance();
|
||||||
|
else
|
||||||
|
itr->down_queue()->balance();
|
||||||
|
}
|
||||||
|
|
||||||
|
return torrent::Object();
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of choke group hack.
|
// End of choke group hack.
|
||||||
//
|
//
|
||||||
@@ -356,6 +359,9 @@ initialize_command_groups() {
|
|||||||
std::bind(&torrent::choke_group::tracker_mode, CG_GROUP_AT())));
|
std::bind(&torrent::choke_group::tracker_mode, CG_GROUP_AT())));
|
||||||
CMD2_ANY_LIST ("choke_group.tracker.mode.set", std::bind(&apply_cg_tracker_mode_set, std::placeholders::_2));
|
CMD2_ANY_LIST ("choke_group.tracker.mode.set", std::bind(&apply_cg_tracker_mode_set, std::placeholders::_2));
|
||||||
|
|
||||||
|
CMD2_ANY ("choke_group.all.up.update_balance", std::bind(&apply_cg_all_update_balance, true));
|
||||||
|
CMD2_ANY ("choke_group.all.down.update_balance", std::bind(&apply_cg_all_update_balance, false));
|
||||||
|
|
||||||
CMD2_ANY ("choke_group.up.rate", std::bind(&torrent::choke_group::up_rate, CG_GROUP_AT()));
|
CMD2_ANY ("choke_group.up.rate", std::bind(&torrent::choke_group::up_rate, CG_GROUP_AT()));
|
||||||
CMD2_ANY ("choke_group.down.rate", std::bind(&torrent::choke_group::down_rate, CG_GROUP_AT()));
|
CMD2_ANY ("choke_group.down.rate", std::bind(&torrent::choke_group::down_rate, CG_GROUP_AT()));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user