* Reordered Makefile.am entries to fix linking errors.

* Changed more commands to std::tr1::bind.


git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@1151 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
rakshasa
2010-03-23 11:24:27 +00:00
parent 83e993a1eb
commit 28aabb7874
7 changed files with 83 additions and 44 deletions
+2 -2
View File
@@ -40,13 +40,13 @@ libsub_root_a_SOURCES = \
bin_PROGRAMS = rtorrent
rtorrent_LDADD = \
libsub_root.a \
ui/libsub_ui.a \
core/libsub_core.a \
display/libsub_display.a \
input/libsub_input.a \
rpc/libsub_rpc.a \
utils/libsub_utils.a \
libsub_root.a
utils/libsub_utils.a
rtorrent_SOURCES = \
main.cc
+6
View File
@@ -247,9 +247,15 @@ add_variable(key, NULL, NULL, &rpc::CommandVariable::get_string, NULL, std::stri
#define CMD2_ANY_VALUE(key, slot) \
CMD2_A_FUNCTION(key, command_base_call_any_value, any_value_function, slot, "i:i", "")
#define CMD2_ANY_VALUE_V(key, slot) \
CMD2_A_FUNCTION(key, command_base_call_any_value, any_value_function, object_convert_void(slot), "i:i", "")
#define CMD2_ANY_STRING(key, slot) \
CMD2_A_FUNCTION(key, command_base_call_any_string, any_string_function, slot, "i:s", "")
#define CMD2_ANY_STRING_V(key, slot) \
CMD2_A_FUNCTION(key, command_base_call_any_string, any_string_function, object_convert_void(slot), "i:s", "")
#define CMD2_ANY_LIST(key, slot) \
CMD2_A_FUNCTION(key, command_base_call_any_list, any_list_function, slot, "i:", "")
+34 -22
View File
@@ -47,6 +47,7 @@
#include <torrent/tracker_list.h>
#include <torrent/torrent.h>
#include <torrent/rate.h>
#include <torrent/data/file_manager.h>
#include "core/dht_manager.h"
#include "core/download.h"
@@ -315,7 +316,7 @@ initialize_xmlrpc() {
control->core()->push_log(buffer);
}
void
torrent::Object
apply_scgi(const std::string& arg, int type) {
if (worker_thread->scgi() != NULL)
throw torrent::input_error("SCGI already enabled.");
@@ -358,7 +359,7 @@ apply_scgi(const std::string& arg, int type) {
throw torrent::input_error("Invalid port number.");
saPtr->set_port(port);
scgi->open_port(saPtr, saPtr->length(), rpc::call_command_value("get_scgi_dont_route"));
scgi->open_port(saPtr, saPtr->length(), rpc::call_command_value("network.scgi.dont_route"));
break;
@@ -378,6 +379,7 @@ apply_scgi(const std::string& arg, int type) {
}
worker_thread->set_scgi(scgi);
return torrent::Object();
}
void
@@ -399,6 +401,7 @@ apply_xmlrpc_dialect(const std::string& arg) {
void
initialize_command_network() {
torrent::ConnectionManager* cm = torrent::connection_manager();
torrent::FileManager* fileManager = torrent::file_manager();
core::CurlStack* httpStack = control->core()->http_stack();
ADD_VARIABLE_BOOL("use_udp_trackers", true);
@@ -423,9 +426,6 @@ initialize_command_network() {
ADD_VARIABLE_VALUE("max_downloads_div", 1);
ADD_VARIABLE_VALUE("max_downloads_global", 0);
// ADD_COMMAND_VALUE_TRI("max_uploads_global", rak::make_mem_fun(control->ui(), &ui::Root::set_max_uploads_global), rak::make_mem_fun(control->ui(), &ui::Root::max_uploads_global));
// ADD_COMMAND_VALUE_TRI("max_downloads_global", rak::make_mem_fun(control->ui(), &ui::Root::set_max_downloads_global), rak::make_mem_fun(control->ui(), &ui::Root::max_downloads_global));
ADD_COMMAND_VALUE_TRI_KB("download_rate", rak::make_mem_fun(control->ui(), &ui::Root::set_down_throttle_i64), rak::make_mem_fun(torrent::down_throttle_global(), &torrent::Throttle::max_rate));
ADD_COMMAND_VALUE_TRI_KB("upload_rate", rak::make_mem_fun(control->ui(), &ui::Root::set_up_throttle_i64), rak::make_mem_fun(torrent::up_throttle_global(), &torrent::Throttle::max_rate));
@@ -445,33 +445,45 @@ initialize_command_network() {
CMD2_ANY_STRING("get_throttle_down_max", std::tr1::bind(&retrieve_throttle_info, std::tr1::placeholders::_2, throttle_info_down | throttle_info_max));
CMD2_ANY_STRING("get_throttle_down_rate", std::tr1::bind(&retrieve_throttle_info, std::tr1::placeholders::_2, throttle_info_down | throttle_info_rate));
CMD2_ANY_STRING("tos", std::tr1::bind(&apply_tos, std::tr1::placeholders::_2));
CMD2_ANY_LIST("encryption", std::tr1::bind(&apply_encryption, std::tr1::placeholders::_2));
ADD_COMMAND_STRING_TRI("bind", rak::make_mem_fun(control->core(), &core::Manager::set_bind_address), rak::make_mem_fun(control->core(), &core::Manager::bind_address));
ADD_COMMAND_STRING_TRI("ip", rak::make_mem_fun(control->core(), &core::Manager::set_local_address), rak::make_mem_fun(control->core(), &core::Manager::local_address));
ADD_COMMAND_STRING_TRI("proxy_address", rak::make_mem_fun(control->core(), &core::Manager::set_proxy_address), rak::make_mem_fun(control->core(), &core::Manager::proxy_address));
ADD_COMMAND_STRING_TRI("http_proxy", rak::make_mem_fun(httpStack, &core::CurlStack::set_http_proxy), rak::make_mem_fun(httpStack, &core::CurlStack::http_proxy));
ADD_COMMAND_STRING_TRI("http_capath", rak::make_mem_fun(httpStack, &core::CurlStack::set_http_capath), rak::make_mem_fun(httpStack, &core::CurlStack::http_capath));
ADD_COMMAND_STRING_TRI("http_cacert", rak::make_mem_fun(httpStack, &core::CurlStack::set_http_cacert), rak::make_mem_fun(httpStack, &core::CurlStack::http_cacert));
CMD2_ANY ("network.http.capath", std::tr1::bind(&core::CurlStack::http_capath, httpStack));
CMD2_ANY_STRING_V("network.http.capath.set", std::tr1::bind(&core::CurlStack::set_http_capath, httpStack, std::tr1::placeholders::_2));
CMD2_ANY ("network.http.cacert", std::tr1::bind(&core::CurlStack::http_cacert, httpStack));
CMD2_ANY_STRING_V("network.http.cacert.set", std::tr1::bind(&core::CurlStack::set_http_cacert, httpStack, std::tr1::placeholders::_2));
CMD2_ANY ("network.http.proxy_address", std::tr1::bind(&core::CurlStack::http_proxy, httpStack));
CMD2_ANY_STRING_V("network.http.proxy_address.set", std::tr1::bind(&core::CurlStack::set_http_proxy, httpStack, std::tr1::placeholders::_2));
CMD2_ANY ("network.http.max_open", std::tr1::bind(&core::CurlStack::max_active, httpStack));
CMD2_ANY_VALUE_V ("network.http.max_open.set", std::tr1::bind(&core::CurlStack::set_max_active, httpStack, std::tr1::placeholders::_2));
ADD_COMMAND_VALUE_TRI("send_buffer_size", rak::make_mem_fun(cm, &torrent::ConnectionManager::set_send_buffer_size), rak::make_mem_fun(cm, &torrent::ConnectionManager::send_buffer_size));
ADD_COMMAND_VALUE_TRI("receive_buffer_size", rak::make_mem_fun(cm, &torrent::ConnectionManager::set_receive_buffer_size), rak::make_mem_fun(cm, &torrent::ConnectionManager::receive_buffer_size));
CMD2_ANY ("network.send_buffer.size", std::tr1::bind(&torrent::ConnectionManager::send_buffer_size, cm));
CMD2_ANY_VALUE_V ("network.send_buffer.size.set", std::tr1::bind(&torrent::ConnectionManager::set_send_buffer_size, cm, std::tr1::placeholders::_2));
CMD2_ANY ("network.receive_buffer.size", std::tr1::bind(&torrent::ConnectionManager::receive_buffer_size, cm));
CMD2_ANY_VALUE_V ("network.receive_buffer.size.set", std::tr1::bind(&torrent::ConnectionManager::set_receive_buffer_size, cm, std::tr1::placeholders::_2));
CMD2_ANY_STRING ("network.tos.set", std::tr1::bind(&apply_tos, std::tr1::placeholders::_2));
ADD_COMMAND_VALUE_TRI("hash_max_tries", std::ptr_fun(&torrent::set_hash_max_tries), rak::ptr_fun(&torrent::hash_max_tries));
ADD_COMMAND_VALUE_TRI("max_open_files", std::ptr_fun(&torrent::set_max_open_files), rak::ptr_fun(&torrent::max_open_files));
ADD_COMMAND_VALUE_TRI("max_open_sockets", rak::make_mem_fun(cm, &torrent::ConnectionManager::set_max_size), rak::make_mem_fun(cm, &torrent::ConnectionManager::max_size));
ADD_COMMAND_VALUE_TRI("max_open_http", rak::make_mem_fun(httpStack, &core::CurlStack::set_max_active), rak::make_mem_fun(httpStack, &core::CurlStack::max_active));
CMD2_ANY ("network.bind_address", std::tr1::bind(&core::Manager::bind_address, control->core()));
CMD2_ANY_STRING_V("network.bind_address.set", std::tr1::bind(&core::Manager::set_bind_address, control->core(), std::tr1::placeholders::_2));
CMD2_ANY ("network.local_address", std::tr1::bind(&core::Manager::local_address, control->core()));
CMD2_ANY_STRING_V("network.local_address.set", std::tr1::bind(&core::Manager::set_local_address, control->core(), std::tr1::placeholders::_2));
CMD2_ANY ("network.proxy_address", std::tr1::bind(&core::Manager::proxy_address, control->core()));
CMD2_ANY_STRING_V("network.proxy_address.set", std::tr1::bind(&core::Manager::set_proxy_address, control->core(), std::tr1::placeholders::_2));
CMD2_ANY ("network.max_open_files", std::tr1::bind(&torrent::FileManager::max_open_files, fileManager));
CMD2_ANY_VALUE_V ("network.max_open_files.set", std::tr1::bind(&torrent::FileManager::set_max_open_files, fileManager, std::tr1::placeholders::_2));
CMD2_ANY ("network.max_open_sockets", std::tr1::bind(&torrent::ConnectionManager::max_size, cm));
CMD2_ANY_VALUE_V ("network.max_open_sockets.set", std::tr1::bind(&torrent::ConnectionManager::set_max_size, cm, std::tr1::placeholders::_2));
CMD2_ANY_STRING ("network.scgi.open_port", std::tr1::bind(&apply_scgi, std::tr1::placeholders::_2, 1));
CMD2_ANY_STRING ("network.scgi.open_local", std::tr1::bind(&apply_scgi, std::tr1::placeholders::_2, 2));
rpc::commands.call("method.insert", rpc::create_object_list("network.scgi.dont_route", "bool|const", int64_t()));
ADD_COMMAND_STRING_UN("scgi_port", rak::bind2nd(std::ptr_fun(&apply_scgi), 1));
ADD_COMMAND_STRING_UN("scgi_local", rak::bind2nd(std::ptr_fun(&apply_scgi), 2));
ADD_VARIABLE_BOOL ("scgi_dont_route", false);
ADD_COMMAND_STRING_UN("xmlrpc_dialect", std::ptr_fun(&apply_xmlrpc_dialect));
ADD_COMMAND_VALUE_TRI("xmlrpc_size_limit", std::ptr_fun(&rpc::XmlRpc::set_size_limit), rak::ptr_fun(&rpc::XmlRpc::size_limit));
ADD_COMMAND_VALUE_TRI("hash_read_ahead", std::ptr_fun(&apply_hash_read_ahead), rak::ptr_fun(torrent::hash_read_ahead));
ADD_COMMAND_VALUE_TRI("hash_interval", std::ptr_fun(&apply_hash_interval), rak::ptr_fun(torrent::hash_interval));
ADD_COMMAND_VALUE_TRI("hash_max_tries", std::ptr_fun(&torrent::set_hash_max_tries), rak::ptr_fun(&torrent::hash_max_tries));
ADD_COMMAND_VALUE_UN("enable_trackers", std::ptr_fun(&apply_enable_trackers));
ADD_COMMAND_STRING_UN("encoding_list", std::ptr_fun(&apply_encoding_list));
+11 -15
View File
@@ -399,18 +399,17 @@ apply_if(rpc::target_type target, const torrent::Object& rawArgs, int flags) {
}
torrent::Object
cmd_view_size(__UNUSED rpc::target_type target, const torrent::Object& rawArgs) {
return (*control->view_manager()->find_throw(rawArgs.as_string()))->size_visible();
cmd_view_size(const torrent::Object::string_type& args) {
return (*control->view_manager()->find_throw(args))->size_visible();
}
torrent::Object
cmd_view_size_not_visible(__UNUSED rpc::target_type target, const torrent::Object& rawArgs) {
return (*control->view_manager()->find_throw(rawArgs.as_string()))->size_not_visible();
cmd_view_size_not_visible(const torrent::Object::string_type& args) {
return (*control->view_manager()->find_throw(args))->size_not_visible();
}
torrent::Object
cmd_view_persistent(__UNUSED rpc::target_type target, const torrent::Object& rawArgs) {
const std::string& args = rawArgs.as_string();
cmd_view_persistent(const torrent::Object::string_type& args) {
core::View* view = *control->view_manager()->find_throw(args);
if (!view->get_filter().empty() || !view->get_event_added().empty() || !view->get_event_removed().empty())
@@ -424,9 +423,8 @@ cmd_view_persistent(__UNUSED rpc::target_type target, const torrent::Object& raw
}
torrent::Object
cmd_ui_set_view(__UNUSED rpc::target_type target, const torrent::Object& rawArgs) {
control->ui()->download_list()->set_current_view(rawArgs.as_string());
cmd_ui_set_view(const torrent::Object::string_type& args) {
control->ui()->download_list()->set_current_view(args);
return torrent::Object();
}
@@ -479,19 +477,17 @@ initialize_command_ui() {
// Cleanup and add . to view.
CMD_G_STRING("view.size", rak::ptr_fn(&cmd_view_size));
CMD_G_STRING("view.size_not_visible", rak::ptr_fn(&cmd_view_size_not_visible));
CMD_G_STRING("view.persistent", rak::ptr_fn(&cmd_view_persistent));
CMD2_ANY_STRING("view.size", std::tr1::bind(&cmd_view_size, std::tr1::placeholders::_2));
CMD2_ANY_STRING("view.size_not_visible", std::tr1::bind(&cmd_view_size_not_visible, std::tr1::placeholders::_2));
CMD2_ANY_STRING("view.persistent", std::tr1::bind(&cmd_view_persistent, std::tr1::placeholders::_2));
CMD_D_STRING("view.filter_download", rak::ptr_fn(&cmd_view_filter_download));
CMD_D_STRING("view.set_visible", rak::ptr_fn(&cmd_view_set_visible));
CMD_D_STRING("view.set_not_visible", rak::ptr_fn(&cmd_view_set_not_visible));
// Commands that affect the default rtorrent UI.
// ADD_ANY_NONE("ui.focus", rak::ptr_fn(&cmd_ui_focus));
CMD_D_ANY("ui.unfocus_download", rak::ptr_fn(&cmd_ui_unfocus_download));
CMD_N_STRING("ui.current_view.set", rak::ptr_fn(&cmd_ui_set_view));
CMD2_ANY_STRING("ui.current_view.set", std::tr1::bind(&cmd_ui_set_view, std::tr1::placeholders::_2));
// Move.
CMD2_ANY("print", &apply_print);
+3 -2
View File
@@ -50,6 +50,7 @@
#include <torrent/tracker.h>
#include <torrent/tracker_list.h>
#include <torrent/data/file_list.h>
#include <torrent/data/file_manager.h>
#include <torrent/peer/client_info.h>
#include "core/download.h"
@@ -309,8 +310,8 @@ print_status_extra(char* first, char* last) {
torrent::connection_manager()->max_size());
first = print_buffer(first, last, " [F %i/%i]",
torrent::open_files(),
torrent::max_open_files());
torrent::file_manager()->open_files(),
torrent::file_manager()->max_open_files());
return first;
}
+25 -1
View File
@@ -88,7 +88,7 @@ parse_options(Control* c, int argc, char** argv) {
optionParser.insert_flag('n', OptionParser::Slot());
optionParser.insert_flag('D', OptionParser::Slot());
optionParser.insert_option('b', sigc::bind<0>(sigc::ptr_fun(&rpc::call_command_set_string), "bind"));
optionParser.insert_option('b', sigc::bind<0>(sigc::ptr_fun(&rpc::call_command_set_string), "network.bind_address.set"));
optionParser.insert_option('d', sigc::bind<0>(sigc::ptr_fun(&rpc::call_command_set_string), "directory"));
optionParser.insert_option('i', sigc::bind<0>(sigc::ptr_fun(&rpc::call_command_set_string), "ip"));
optionParser.insert_option('p', sigc::bind<0>(sigc::ptr_fun(&rpc::call_command_set_string), "port_range"));
@@ -351,6 +351,30 @@ main(int argc, char** argv) {
"method.insert = get_max_memory_usage,redirect|const,pieces.memory.max\n"
"method.insert = set_max_memory_usage,redirect|const,pieces.memory.max.set\n"
"method.insert = get_send_buffer_size,redirect|const,network.send_buffer.size\n"
"method.insert = set_send_buffer_size,redirect|const,network.send_buffer.size.set\n"
"method.insert = get_receive_buffer_size,redirect|const,network.receive_buffer.size\n"
"method.insert = set_receive_buffer_size,redirect|const,network.receive_buffer.size.set\n"
"method.insert = bind, redirect|const,network.bind_address.set\n"
"method.insert = set_bind,redirect|const,network.bind_address.set\n"
"method.insert = get_bind,redirect|const,network.bind_address\n"
"method.insert = ip, redirect|const,network.local_address.set\n"
"method.insert = set_ip,redirect|const,network.local_address.set\n"
"method.insert = get_ip,redirect|const,network.local_address\n"
"method.insert = proxy_address, redirect|const,network.proxy_address.set\n"
"method.insert = set_proxy_address,redirect|const,network.proxy_address.set\n"
"method.insert = get_proxy_address,redirect|const,network.proxy_address\n"
"method.insert = scgi_port, redirect|const,network.scgi.open_port\n"
"method.insert = scgi_local,redirect|const,network.scgi.open_local\n"
"method.insert = scgi_dont_route, redirect|const,network.scgi.dont_route.set\n"
"method.insert = set_scgi_dont_route,redirect|const,network.scgi.dont_route.set\n"
"method.insert = get_scgi_dont_route,redirect|const,network.scgi.dont_route\n"
"method.insert = d.get_hash,redirect|const,d.hash\n"
"method.insert = d.get_local_id,redirect|const,d.local_id\n"
"method.insert = d.get_local_id_html,redirect|const,d.local_id_html\n"
+2 -2
View File
@@ -178,8 +178,8 @@ Download::create_info() {
element->push_back("");
element->push_column("Connection type:", te_command("d.get_connection_current="));
element->push_column("Safe sync:", te_command("if=$pieces.sync.always_safe=,yes,no"));
element->push_column("Send buffer:", te_command("cat=$to_kb=$get_send_buffer_size=,\" KB\""));
element->push_column("Receive buffer:", te_command("cat=$to_kb=$get_receive_buffer_size=,\" KB\""));
element->push_column("Send buffer:", te_command("cat=$to_kb=$network.send_buffer.size=,\" KB\""));
element->push_column("Receive buffer:", te_command("cat=$to_kb=$network.receive_buffer.size=,\" KB\""));
// TODO: Define a custom command for this and use $argument.0 instead of looking up the name multiple times?
element->push_column("Throttle:", te_command("branch=d.get_throttle_name=,\""