mirror of
https://github.com/rakshasa/rtorrent.git
synced 2026-10-07 14:49:21 +00:00
* Added 'file.append' command for easy writing of stats to a log file.
* Cleaning up and prepearing the download / resource_manager for further improvements. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@1214 e378c898-3ddf-0310-93e7-cc216c733640
This commit is contained in:
+2
-22
@@ -1,25 +1,5 @@
|
|||||||
#/bin/bash
|
#/bin/bash
|
||||||
gnuplot << EOF
|
gnuplot << EOF
|
||||||
# 1) $system.time_seconds=
|
|
||||||
#
|
|
||||||
# 2) $throttle.global_up.rate=
|
|
||||||
# 3) $throttle.global_up.total=
|
|
||||||
# 4) $throttle.global_down.rate=
|
|
||||||
# 5) $throttle.global_down.total=
|
|
||||||
#
|
|
||||||
# 6) $throttle.unchoked_uploads=
|
|
||||||
# 7) $throttle.unchoked_downloads=
|
|
||||||
# 8) $view.size=active
|
|
||||||
# 9) $pieces.memory.current=
|
|
||||||
# 10) $pieces.memory.sync_queue=
|
|
||||||
# 11) $pieces.memory.block_count=
|
|
||||||
# 12) $pieces.stats.total_size=
|
|
||||||
# 13) $pieces.hash.queue_size=
|
|
||||||
#
|
|
||||||
# log.libtorrent = mincore_stats,(cat,"/foo/mincore_stats.",(system.pid))
|
|
||||||
#
|
|
||||||
# schedule = log_bandwidth_stats,5,10,((execute,log_rtorrent.sh,((cat,/foo/bandwidth_stats.,((system.pid)))),((system.time_seconds)),((throttle.global_up.rate)),((throttle.global_up.total)),((throttle.global_down.rate)),((throttle.global_down.total)),((throttle.unchoked_uploads)),((throttle.unchoked_downloads)),((view.size,active)),((pieces.memory.current)),((pieces.memory.sync_queue)),((pieces.memory.block_count)),((pieces.stats.total_size)),((pieces.hash.queue_size))))
|
|
||||||
#
|
|
||||||
# 1) system.time_seconds=
|
# 1) system.time_seconds=
|
||||||
#
|
#
|
||||||
# 2) throttle.global_up.rate
|
# 2) throttle.global_up.rate
|
||||||
@@ -33,7 +13,7 @@ gnuplot << EOF
|
|||||||
# 9) pieces.stats.total_size
|
# 9) pieces.stats.total_size
|
||||||
# 10) pieces.hash.queue_size
|
# 10) pieces.hash.queue_size
|
||||||
#
|
#
|
||||||
# schedule = log_bandwidth_stats,5,10,((execute,log_rtorrent.sh,((cat,/foo/bandwidth_stats.,((system.pid)))),((system.time_seconds)),((throttle.global_up.rate)),((throttle.global_up.total)),((throttle.global_down.rate)),((throttle.global_down.total)),((pieces.memory.current)),((pieces.memory.sync_queue)),((pieces.memory.block_count)),((pieces.stats.total_size)),((pieces.hash.queue_size))))
|
# schedule = log_bandwidth_stats,5,10,((file.append,((cat,/foo/bandwidth_stats.,((system.pid)))),((system.time_seconds)),((throttle.global_up.rate)),((throttle.global_up.total)),((throttle.global_down.rate)),((throttle.global_down.total)),((pieces.memory.current)),((pieces.memory.sync_queue)),((pieces.memory.block_count)),((pieces.stats.total_size)),((pieces.hash.queue_size))))
|
||||||
#
|
#
|
||||||
# 1) system.time_seconds
|
# 1) system.time_seconds
|
||||||
#
|
#
|
||||||
@@ -45,7 +25,7 @@ gnuplot << EOF
|
|||||||
# 6) view.size,seeding
|
# 6) view.size,seeding
|
||||||
# 7) view.size,active
|
# 7) view.size,active
|
||||||
#
|
#
|
||||||
# schedule = log_peer_stats,5,10,((execute,log_rtorrent.sh,((cat,/foo/peer_stats.,((system.pid)))),((system.time_seconds)),((throttle.unchoked_uploads)),((throttle.unchoked_downloads)),((network.open_sockets)),((view.size,leeching)),((view.size,seeding)),((view.size,active))))
|
# schedule = log_peer_stats,5,10,((file.append,((cat,/foo/peer_stats.,((system.pid)))),((system.time_seconds)),((throttle.unchoked_uploads)),((throttle.unchoked_downloads)),((network.open_sockets)),((view.size,leeching)),((view.size,seeding)),((view.size,active))))
|
||||||
|
|
||||||
|
|
||||||
set terminal png size 1024,600
|
set terminal png size 1024,600
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <rak/path.h>
|
#include <rak/path.h>
|
||||||
|
#include <rak/error_number.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <torrent/torrent.h>
|
#include <torrent/torrent.h>
|
||||||
@@ -252,6 +253,50 @@ log_vmmap_dump(const std::string& str) {
|
|||||||
return torrent::Object();
|
return torrent::Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const int file_print_use_space = 0x1;
|
||||||
|
static const int file_print_delim_space = 0x2;
|
||||||
|
|
||||||
|
void
|
||||||
|
file_print_list(torrent::Object::list_const_iterator first, torrent::Object::list_const_iterator last, FILE* output, int flags) {
|
||||||
|
while (first != last) {
|
||||||
|
switch (first->type()) {
|
||||||
|
case torrent::Object::TYPE_STRING:
|
||||||
|
fprintf(output, " %s" + !(flags & file_print_use_space), first->as_string().c_str());
|
||||||
|
break;
|
||||||
|
case torrent::Object::TYPE_VALUE:
|
||||||
|
fprintf(output, " %lli" + !(flags & file_print_use_space), first->as_value());
|
||||||
|
break;
|
||||||
|
case torrent::Object::TYPE_LIST:
|
||||||
|
file_print_list(first->as_list().begin(), first->as_list().end(), output, 0);
|
||||||
|
break;
|
||||||
|
case torrent::Object::TYPE_NONE:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw torrent::input_error("Invalid type.");
|
||||||
|
}
|
||||||
|
|
||||||
|
flags |= (flags & file_print_delim_space) >> 1;
|
||||||
|
first++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
torrent::Object
|
||||||
|
cmd_file_append(const torrent::Object::list_type& args) {
|
||||||
|
if (args.empty())
|
||||||
|
throw torrent::input_error("Invalid number of arguments.");
|
||||||
|
|
||||||
|
FILE* output = fopen(args.front().as_string().c_str(), "a");
|
||||||
|
|
||||||
|
if (output == NULL)
|
||||||
|
throw torrent::input_error("Could not append to file '" + args.front().as_string() + "': " + rak::error_number::current().c_str());
|
||||||
|
|
||||||
|
file_print_list(++args.begin(), args.end(), output, file_print_delim_space);
|
||||||
|
|
||||||
|
fprintf(output, "\n");
|
||||||
|
fclose(output);
|
||||||
|
return torrent::Object();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
initialize_command_local() {
|
initialize_command_local() {
|
||||||
torrent::ChunkManager* chunkManager = torrent::chunk_manager();
|
torrent::ChunkManager* chunkManager = torrent::chunk_manager();
|
||||||
@@ -342,6 +387,8 @@ initialize_command_local() {
|
|||||||
CMD2_ANY_STRING_V("log.xmlrpc", std::bind(&ThreadWorker::set_xmlrpc_log, worker_thread, std::placeholders::_2));
|
CMD2_ANY_STRING_V("log.xmlrpc", std::bind(&ThreadWorker::set_xmlrpc_log, worker_thread, std::placeholders::_2));
|
||||||
CMD2_ANY_LIST ("log.libtorrent", std::bind(&apply_log_libtorrent, std::placeholders::_2));
|
CMD2_ANY_LIST ("log.libtorrent", std::bind(&apply_log_libtorrent, std::placeholders::_2));
|
||||||
|
|
||||||
|
CMD2_ANY_LIST ("file.append", std::bind(&cmd_file_append, std::placeholders::_2));
|
||||||
|
|
||||||
// TODO: Convert to new command types:
|
// TODO: Convert to new command types:
|
||||||
*rpc::command_base::argument(0) = "placeholder.0";
|
*rpc::command_base::argument(0) = "placeholder.0";
|
||||||
*rpc::command_base::argument(1) = "placeholder.1";
|
*rpc::command_base::argument(1) = "placeholder.1";
|
||||||
|
|||||||
Reference in New Issue
Block a user