forked from premiere/premiere-libtorrent
client_test fixes
This commit is contained in:
parent
374380667c
commit
622981d2cd
|
@ -1815,6 +1815,8 @@ int main(int argc, char* argv[])
|
|||
{
|
||||
torrent_status const& s = view.get_active_torrent();
|
||||
|
||||
print(piece_bar(s.pieces, 126).c_str());
|
||||
|
||||
if ((print_downloads && s.state != torrent_status::seeding)
|
||||
|| print_peers)
|
||||
h.get_peer_info(peers);
|
||||
|
@ -1940,7 +1942,10 @@ int main(int argc, char* argv[])
|
|||
|
||||
out += "___________________________________\n";
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
print("\x1b[K");
|
||||
}
|
||||
|
||||
if (print_log)
|
||||
|
@ -1953,6 +1958,9 @@ int main(int argc, char* argv[])
|
|||
}
|
||||
}
|
||||
|
||||
++pos;
|
||||
set_cursor_pos(0, pos);
|
||||
|
||||
print(out.c_str());
|
||||
fflush(stdout);
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@ std::string color(std::string const& s, color_code c)
|
|||
}
|
||||
|
||||
std::string const& progress_bar(int progress, int width, color_code c
|
||||
, char fill, char bg, std::string caption)
|
||||
, char fill, char bg, std::string caption, int flags)
|
||||
{
|
||||
static std::string bar;
|
||||
bar.clear();
|
||||
|
@ -108,8 +108,13 @@ std::string const& progress_bar(int progress, int width, color_code c
|
|||
caption.resize(width, ' ');
|
||||
|
||||
char str[256];
|
||||
snprintf(str, sizeof(str), "\x1b[4%d;3%dm%s\x1b[48;5;238m\x1b[37m%s\x1b[49;39m"
|
||||
, c, tc, caption.substr(0, progress_chars).c_str(), caption.substr(progress_chars).c_str());
|
||||
if (flags & progress_invert)
|
||||
snprintf(str, sizeof(str), "\x1b[48;5;238m\x1b[37m%s\x1b[4%d;3%dm%s\x1b[49;39m"
|
||||
, caption.substr(0, progress_chars).c_str(), c, tc
|
||||
, caption.substr(progress_chars).c_str());
|
||||
else
|
||||
snprintf(str, sizeof(str), "\x1b[4%d;3%dm%s\x1b[48;5;238m\x1b[37m%s\x1b[49;39m"
|
||||
, c, tc, caption.substr(0, progress_chars).c_str(), caption.substr(progress_chars).c_str());
|
||||
bar = str;
|
||||
}
|
||||
return bar;
|
||||
|
|
|
@ -24,8 +24,10 @@ std::string add_suffix(float val, char const* suffix = 0);
|
|||
|
||||
std::string color(std::string const& s, color_code c);
|
||||
|
||||
enum { progress_invert = 1};
|
||||
|
||||
std::string const& progress_bar(int progress, int width, color_code c = col_green
|
||||
, char fill = '#', char bg = '-', std::string caption = "");
|
||||
, char fill = '#', char bg = '-', std::string caption = "", int flags = 0);
|
||||
|
||||
void set_cursor_pos(int x, int y);
|
||||
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
|
||||
session_view::session_view()
|
||||
{
|
||||
m_width = 128;
|
||||
|
||||
std::vector<lt::stats_metric> metrics = lt::session_stats_metrics();
|
||||
m_cnt[0].resize(metrics.size(), 0);
|
||||
m_cnt[1].resize(metrics.size(), 0);
|
||||
|
@ -17,10 +19,8 @@ session_view::session_view()
|
|||
m_unchoke_slots_idx = find_metric_idx(metrics, "ses.num_unchoke_slots");
|
||||
m_limiter_up_queue_idx = find_metric_idx(metrics, "net.limiter_up_queue");
|
||||
m_limiter_down_queue_idx = find_metric_idx(metrics, "net.limiter_down_queue");
|
||||
m_limiter_up_bytes_idx = find_metric_idx(metrics, "net.limiter_up_bytes");
|
||||
m_limiter_down_bytes_idx = find_metric_idx(metrics, "net.limiter_down_bytes");
|
||||
m_queued_writes_idx = find_metric_idx(metrics, "disk.num_write_jobs");
|
||||
m_queued_reads_idx = find_metric_idx(metrics, "disk.num_write_jobs");
|
||||
m_queued_reads_idx = find_metric_idx(metrics, "disk.num_read_jobs");
|
||||
|
||||
m_writes_cache_idx = find_metric_idx(metrics, "disk.write_cache_blocks");
|
||||
m_reads_cache_idx = find_metric_idx(metrics, "disk.read_cache_blocks");
|
||||
|
@ -30,6 +30,11 @@ session_view::session_view()
|
|||
m_blocks_in_use_idx = find_metric_idx(metrics, "disk.disk_blocks_in_use");
|
||||
m_blocks_written_idx = find_metric_idx(metrics, "disk.num_blocks_written");
|
||||
m_write_ops_idx = find_metric_idx(metrics, "disk.num_write_ops");
|
||||
|
||||
m_mfu_size_idx = find_metric_idx(metrics, "disk.arc_mfu_size");
|
||||
m_mfu_ghost_idx = find_metric_idx(metrics, "disk.arc_mfu_ghost_size");
|
||||
m_mru_size_idx = find_metric_idx(metrics, "disk.arc_mru_size");
|
||||
m_mru_ghost_idx = find_metric_idx(metrics, "disk.arc_mru_ghost_size");
|
||||
}
|
||||
|
||||
void session_view::set_pos(int pos)
|
||||
|
@ -41,7 +46,7 @@ int session_view::pos() const { return m_position; }
|
|||
|
||||
int session_view::height() const
|
||||
{
|
||||
return 2;
|
||||
return 3;
|
||||
}
|
||||
|
||||
void session_view::render()
|
||||
|
@ -58,29 +63,34 @@ void session_view::render()
|
|||
int upload_rate = (m_cnt[0][m_sent_payload_idx] - m_cnt[1][m_sent_payload_idx])
|
||||
/ seconds;
|
||||
|
||||
pos += snprintf(str, sizeof(str), "| conns: %d down: %s (%s) up: %s (%s)\x1b[K"
|
||||
, int(m_cnt[0][m_num_peers_idx])
|
||||
pos += snprintf(str, sizeof(str), "%s%s fail: %s down: %s (%s) "
|
||||
" bw queue: %s | %s conns: %3d unchoked: %2d / %2d "
|
||||
" %s\x1b[K"
|
||||
, esc("48;5;238")
|
||||
, esc("1")
|
||||
, add_suffix(m_cnt[0][m_failed_bytes_idx]).c_str()
|
||||
, color(add_suffix(download_rate, "/s"), col_green).c_str()
|
||||
, color(add_suffix(m_cnt[0][m_recv_payload_idx]), col_green).c_str()
|
||||
, color(add_suffix(upload_rate, "/s"), col_red).c_str()
|
||||
, color(add_suffix(m_cnt[0][m_sent_payload_idx]), col_red).c_str());
|
||||
, color(to_string(m_cnt[0][m_limiter_up_queue_idx], 3), col_red).c_str()
|
||||
, color(to_string(m_cnt[0][m_limiter_down_queue_idx], 3), col_green).c_str()
|
||||
, int(m_cnt[0][m_num_peers_idx])
|
||||
, int(m_cnt[0][m_unchoked_idx])
|
||||
, int(m_cnt[0][m_unchoke_slots_idx])
|
||||
, esc("0"));
|
||||
|
||||
set_cursor_pos(0, y++);
|
||||
print(str);
|
||||
|
||||
snprintf(str, sizeof(str), "| waste: %s fail: %s unchoked: %d / %d "
|
||||
"bw queues: %8d (%d) | %8d (%d) disk queues: %d | %d cache: w: %d%% r: %d%% "
|
||||
"size: w: %s r: %s total: %s\x1b[K"
|
||||
snprintf(str, sizeof(str), "%s%swaste: %s up: %s (%s) "
|
||||
"disk queue: %s | %s cache w: %3d%% r: %3d%% "
|
||||
"size: w: %s r: %s total: %s %s\x1b[K"
|
||||
, esc("48;5;238")
|
||||
, esc("1")
|
||||
, add_suffix(m_cnt[0][m_wasted_bytes_idx]).c_str()
|
||||
, add_suffix(m_cnt[0][m_failed_bytes_idx]).c_str()
|
||||
, int(m_cnt[0][m_unchoked_idx])
|
||||
, int(m_cnt[0][m_unchoke_slots_idx])
|
||||
, int(m_cnt[0][m_limiter_up_bytes_idx])
|
||||
, int(m_cnt[0][m_limiter_up_queue_idx])
|
||||
, int(m_cnt[0][m_limiter_down_bytes_idx])
|
||||
, int(m_cnt[0][m_limiter_down_queue_idx])
|
||||
, int(m_cnt[0][m_queued_writes_idx])
|
||||
, int(m_cnt[0][m_queued_reads_idx])
|
||||
, color(add_suffix(upload_rate, "/s"), col_red).c_str()
|
||||
, color(add_suffix(m_cnt[0][m_sent_payload_idx]), col_red).c_str()
|
||||
, color(to_string(m_cnt[0][m_queued_reads_idx], 3), col_red).c_str()
|
||||
, color(to_string(m_cnt[0][m_queued_writes_idx], 3), col_green).c_str()
|
||||
, int((m_cnt[0][m_blocks_written_idx] - m_cnt[0][m_write_ops_idx]) * 100
|
||||
/ (std::max)(boost::uint64_t(1), m_cnt[0][m_blocks_written_idx]))
|
||||
, int(m_cnt[0][m_cache_hit_idx] * 100
|
||||
|
@ -88,7 +98,7 @@ void session_view::render()
|
|||
, add_suffix(m_cnt[0][m_writes_cache_idx] * 16 * 1024).c_str()
|
||||
, add_suffix(m_cnt[0][m_reads_cache_idx] * 16 * 1024).c_str()
|
||||
, add_suffix(m_cnt[0][m_blocks_in_use_idx] * 16 * 1024).c_str()
|
||||
);
|
||||
, esc("0"));
|
||||
set_cursor_pos(0, y++);
|
||||
print(str);
|
||||
|
||||
|
@ -115,39 +125,40 @@ void session_view::render()
|
|||
, int(m_cnt[0][m_queued_bytes_idx] / 0x4000));
|
||||
set_cursor_pos(0, y++);
|
||||
print(str);
|
||||
|
||||
int mru_size = cs.arc_mru_size + cs.arc_mru_ghost_size;
|
||||
int mfu_size = cs.arc_mfu_size + cs.arc_mfu_ghost_size;
|
||||
*/
|
||||
int mru_size = int(m_cnt[0][m_mru_size_idx] + m_cnt[0][m_mru_ghost_idx]);
|
||||
int mfu_size = int(m_cnt[0][m_mfu_size_idx] + m_cnt[0][m_mfu_ghost_idx]);
|
||||
int arc_size = mru_size + mfu_size;
|
||||
|
||||
snprintf(str, sizeof(str), "LRU: (%d) %d LFU: %d (%d)\n"
|
||||
, cs.arc_mru_ghost_size, cs.arc_mru_size
|
||||
, cs.arc_mfu_size, cs.arc_mfu_ghost_size);
|
||||
char mru_caption[100];
|
||||
snprintf(mru_caption, sizeof(mru_caption), "MRU: %d (%d)"
|
||||
, int(m_cnt[0][m_mru_size_idx]), int(m_cnt[0][m_mru_ghost_idx]));
|
||||
char mfu_caption[100];
|
||||
snprintf(mfu_caption, sizeof(mfu_caption), "MFU: %d (%d)"
|
||||
, int(m_cnt[0][m_mfu_size_idx]), int(m_cnt[0][m_mfu_ghost_idx]));
|
||||
|
||||
set_cursor_pos(0, y++);
|
||||
print(str);
|
||||
|
||||
str[0] = '\0';
|
||||
pos = snprintf(str, sizeof(str), "cache: ");
|
||||
if (arc_size > 0)
|
||||
{
|
||||
pos = snprintf(str, sizeof(str), " ");
|
||||
if (mru_size > 0)
|
||||
{
|
||||
pos = snprintf(str + pos, sizeof(str) - pos, "%s"
|
||||
, progress_bar(cs.arc_mru_ghost_size * 1000 / mru_size
|
||||
, mru_size * (terminal_width-3) / arc_size, col_yellow, '-', '#').c_str());
|
||||
pos += snprintf(str + pos, sizeof(str) - pos, "%s"
|
||||
, progress_bar(m_cnt[0][m_mru_ghost_idx] * 1000 / mru_size
|
||||
, mru_size * (m_width-8) / arc_size, col_yellow, '-', '#'
|
||||
, mru_caption, progress_invert).c_str());
|
||||
}
|
||||
pos = snprintf(str, sizeof(str), "|");
|
||||
pos += snprintf(str + pos, sizeof(str) - pos, "|");
|
||||
if (mfu_size)
|
||||
{
|
||||
pos = snprintf(str + pos, sizeof(str) - pos, "%s"
|
||||
, progress_bar(cs.arc_mfu_size * 1000 / mfu_size
|
||||
, mfu_size * (terminal_width-3) / arc_size, col_green, '=', '-').c_str());
|
||||
pos += snprintf(str + pos, sizeof(str) - pos, "%s"
|
||||
, progress_bar(m_cnt[0][m_mfu_size_idx] * 1000 / mfu_size
|
||||
, mfu_size * (m_width-8) / arc_size, col_green, '#', '-'
|
||||
, mfu_caption).c_str());
|
||||
}
|
||||
}
|
||||
pos += snprintf(str + pos, sizeof(str) - pos, "\x1b[K");
|
||||
set_cursor_pos(0, y++);
|
||||
print(str);
|
||||
*/
|
||||
}
|
||||
|
||||
void session_view::update_counters(std::vector<boost::uint64_t>& stats_counters
|
||||
|
|
|
@ -23,6 +23,7 @@ struct session_view
|
|||
private:
|
||||
|
||||
int m_position;
|
||||
int m_width;
|
||||
|
||||
// there are two sets of counters. the current one and the last one. This
|
||||
// is used to calculate rates
|
||||
|
@ -42,8 +43,6 @@ private:
|
|||
int m_unchoke_slots_idx;
|
||||
int m_limiter_up_queue_idx;
|
||||
int m_limiter_down_queue_idx;
|
||||
int m_limiter_up_bytes_idx;
|
||||
int m_limiter_down_bytes_idx;
|
||||
int m_queued_writes_idx;
|
||||
int m_queued_reads_idx;
|
||||
int m_writes_cache_idx;
|
||||
|
@ -54,6 +53,11 @@ private:
|
|||
int m_blocks_in_use_idx;
|
||||
int m_blocks_written_idx;
|
||||
int m_write_ops_idx;
|
||||
|
||||
int m_mfu_size_idx;
|
||||
int m_mfu_ghost_idx;
|
||||
int m_mru_size_idx;
|
||||
int m_mru_ghost_idx;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -336,23 +336,6 @@ void torrent_view::print_torrent(lt::torrent_status const& s, bool selected)
|
|||
pos += snprintf(str + pos, sizeof(str) - pos, "%s", esc("0"));
|
||||
|
||||
pos += snprintf(str + pos, sizeof(str) - pos, "\x1b[K");
|
||||
/*
|
||||
// don't print the piece bar if we don't have any piece, or if we have all
|
||||
if (print_piece_bar && s.num_pieces != 0 && s.progress_ppm != 1000000)
|
||||
{
|
||||
out += " ";
|
||||
out += piece_bar(s.pieces, terminal_width - 7);
|
||||
out += "\n";
|
||||
++lines_printed;
|
||||
if (s.seed_mode)
|
||||
{
|
||||
out += " ";
|
||||
out += piece_bar(s.verified_pieces, terminal_width - 7);
|
||||
out += "\n";
|
||||
++lines_printed;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
if (m_width + 1 < sizeof(str))
|
||||
str[m_width + 1] = '\0';
|
||||
|
|
Loading…
Reference in New Issue