/** * Stringify value of the general stats to buffer. * * @param dst destination buffer * @param size length of destination buffer * @param stats the statistics array * @param idx the index within the general statistics of value to format */ void gnet_stats_gui_general_to_string_buf(char *dst, size_t size, const gnet_stats_t *stats, int idx) { const uint64 value = stats->general[idx]; if (0 == value) g_strlcpy(dst, "-", size); else { switch (idx) { case GNR_QUERY_COMPACT_SIZE: case GNR_IGNORED_DATA: case GNR_SUNK_DATA: case GNR_UDP_READ_AHEAD_BYTES_SUM: case GNR_UDP_READ_AHEAD_BYTES_MAX: case GNR_RUDP_TX_BYTES: case GNR_RUDP_RX_BYTES: g_strlcpy(dst, compact_size(value, show_metric_units()), size); break; case GNR_UDP_READ_AHEAD_DELAY_MAX: g_strlcpy(dst, compact_time(value), size); break; default: uint64_to_string_buf(value, dst, size); } } }
static void print_download_info(gnet_fi_t handle, void *udata) { struct gnutella_shell *sh = udata; gnet_fi_status_t status; gnet_fi_info_t *info; char buf[1024]; shell_check(sh); info = guc_fi_get_info(handle); g_return_if_fail(info); guc_fi_get_status(handle, &status); str_bprintf(ARYLEN(buf), "ID: %s", guid_to_string(info->guid)); shell_write(sh, buf); shell_write(sh, "\n"); /* Terminate line */ str_bprintf(ARYLEN(buf), "Filename: \"%s\"", info->filename); shell_write(sh, buf); shell_write(sh, "\n"); /* Terminate line */ str_bprintf(ARYLEN(buf), "Hash: %s", info->sha1 ? sha1_to_urn_string(info->sha1) : "<none>"); shell_write(sh, buf); shell_write(sh, "\n"); /* Terminate line */ str_bprintf(ARYLEN(buf), "Status: %s", file_info_status_to_string(&status)); shell_write(sh, buf); shell_write(sh, "\n"); /* Terminate line */ str_bprintf(ARYLEN(buf), "Size: %s", compact_size(status.size, GNET_PROPERTY(display_metric_units))); shell_write(sh, buf); shell_write(sh, "\n"); /* Terminate line */ str_bprintf(ARYLEN(buf), "Done: %u%% (%s)", filesize_per_100(status.size, status.done), compact_size(status.done, GNET_PROPERTY(display_metric_units))); shell_write(sh, buf); shell_write(sh, "\n"); /* Terminate line */ shell_write(sh, "--\n"); guc_fi_free_info(info); }
static void print_upload_info(struct gnutella_shell *sh, const struct gnet_upload_info *info) { char buf[1024]; g_return_if_fail(sh); g_return_if_fail(info); str_bprintf(buf, sizeof buf, "%-3.3s %-16.40s %s %s@%s %s%s%s", info->encrypted ? "(E)" : "", host_addr_to_string(info->addr), iso3166_country_cc(info->country), compact_size(info->range_end - info->range_start, GNET_PROPERTY(display_metric_units)), short_size(info->range_start, GNET_PROPERTY(display_metric_units)), info->name ? "\"" : "<", info->name ? info->name : "none", info->name ? "\"" : ">"); shell_write(sh, buf); shell_write(sh, "\n"); /* Terminate line */ }
static void cell_renderer(GtkTreeViewColumn *column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, gpointer udata) { const struct result_data *data; const struct results_set *rs; const gchar *text; enum c_sr_columns id; if (!gtk_tree_view_column_get_visible(column)) return; text = NULL; /* default to nothing */ id = GPOINTER_TO_UINT(udata); data = get_result_data(model, iter); rs = data->record->results_set; switch (id) { case c_sr_filename: text = data->record->utf8_name; break; case c_sr_ext: text = data->record->ext; break; case c_sr_mime: text = mime_type_to_string(mime_type_from_extension(data->record->ext)); break; case c_sr_vendor: if (!(ST_LOCAL & rs->status)) text = vendor_code_get_name(rs->vendor); break; case c_sr_info: text = data->record->info; break; case c_sr_size: text = compact_size(data->record->size, show_metric_units()); break; case c_sr_count: text = data->children ? uint32_to_string(1 + data->children) : NULL; break; case c_sr_loc: if (ISO3166_INVALID != rs->country) text = iso3166_country_cc(rs->country); break; case c_sr_charset: if (!(ST_LOCAL & rs->status)) text = data->record->charset; break; case c_sr_route: text = search_gui_get_route(rs); break; case c_sr_protocol: if (!((ST_LOCAL | ST_BROWSE) & rs->status)) text = ST_UDP & rs->status ? (ST_SR_UDP & rs->status ? N_("UDP (semi-reliable)") : "UDP") : "TCP"; break; case c_sr_hops: if (!((ST_LOCAL | ST_BROWSE) & rs->status)) text = uint32_to_string(rs->hops); break; case c_sr_ttl: if (!((ST_LOCAL | ST_BROWSE) & rs->status)) text = uint32_to_string(rs->ttl); break; case c_sr_spam: if (SR_SPAM & data->record->flags) { text = "S"; /* Spam */ } else if (ST_SPAM & rs->status) { text = "maybe"; /* maybe spam */ } break; case c_sr_owned: if (SR_OWNED & data->record->flags) { text = _("owned"); } else if (SR_PARTIAL & data->record->flags) { text = _("partial"); } else if (SR_SHARED & data->record->flags) { text = _("shared"); } break; case c_sr_hostile: if (ST_HOSTILE & rs->status) { text = "H"; } break; case c_sr_sha1: if (data->record->sha1) { text = sha1_base32(data->record->sha1); } break; case c_sr_ctime: if ((time_t) -1 != data->record->create_time) { text = timestamp_to_string(data->record->create_time); } break; case c_sr_num: g_assert_not_reached(); break; } g_object_set(cell, "text", text, "foreground-gdk", gui_color_get(data->color), "background-gdk", gui_color_get(GUI_COLOR_BACKGROUND), (void *) 0); }
/** * Compute info string for node. * * @return pointer to static data. */ const gchar * nodes_gui_common_status_str(const gnet_node_status_t *n) { static gchar gui_tmp[4096]; const gchar *a; switch (n->status) { case GTA_NODE_CONNECTING: a = _("Connecting..."); break; case GTA_NODE_HELLO_SENT: a = _("Hello sent"); break; case GTA_NODE_WELCOME_SENT: a = _("Welcome sent"); break; case GTA_NODE_CONNECTED: if (n->sent || n->received) { size_t slen = 0; if (!GUI_PROPERTY(node_show_detailed_info)) { str_bprintf(gui_tmp, sizeof(gui_tmp), "TX=%u RX=%u Q=%u,%u%% %s", n->sent, n->received, n->mqueue_count, n->mqueue_percent_used, n->in_tx_swift_control ? " [SW]" : n->in_tx_flow_control ? " [FC]" : ""); a = gui_tmp; break; } if (n->tx_compressed && GUI_PROPERTY(show_gnet_info_txc)) slen += str_bprintf(gui_tmp, sizeof(gui_tmp), "TXc=%u,%d%%", n->sent, (int) (n->tx_compression_ratio * 100.0)); else slen += str_bprintf(gui_tmp, sizeof(gui_tmp), "TX=%u", n->sent); if ( GUI_PROPERTY(show_gnet_info_tx_speed) || GUI_PROPERTY(show_gnet_info_tx_wire) ) { gboolean is_first = TRUE; slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " (" /* ')' */); if (GUI_PROPERTY(show_gnet_info_tx_wire)) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%s", compact_size(n->tx_written, show_metric_units())); is_first = FALSE; } if (GUI_PROPERTY(show_gnet_info_tx_speed)) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%s%s", is_first ? "" : ", ", compact_rate(n->tx_bps, show_metric_units())); slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, /* '(' */ ")"); } if (n->rx_compressed && GUI_PROPERTY(show_gnet_info_rxc)) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " RXc=%u,%d%%", n->received, (int) (n->rx_compression_ratio * 100.0)); else slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " RX=%u", n->received); if ( GUI_PROPERTY(show_gnet_info_rx_speed) || GUI_PROPERTY(show_gnet_info_rx_wire) ) { gboolean is_first = TRUE; slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " (" /* ')' */); if (GUI_PROPERTY(show_gnet_info_rx_wire)) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%s", compact_size(n->rx_given, show_metric_units())); is_first = FALSE; } if (GUI_PROPERTY(show_gnet_info_rx_speed)) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%s%s", is_first ? "" : ", ", compact_rate(n->rx_bps, show_metric_units())); slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, /* '(' */ ")"); } if ( GUI_PROPERTY(show_gnet_info_tx_queries) || GUI_PROPERTY(show_gnet_info_rx_queries) || GUI_PROPERTY(show_gnet_info_gen_queries) || GUI_PROPERTY(show_gnet_info_sq_queries) ) { gboolean is_first = TRUE; slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " Query(" /* ')' */); if (GUI_PROPERTY(show_gnet_info_gen_queries)) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "Gen=%u", n->squeue_sent); is_first = FALSE; } if (GUI_PROPERTY(show_gnet_info_sq_queries)) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%sQ=%u", is_first ? "" : ", ", n->squeue_count); is_first = FALSE; } if (GUI_PROPERTY(show_gnet_info_tx_queries)) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%sTX=%u", is_first ? "" : ", ", n->tx_queries); is_first = FALSE; } if (GUI_PROPERTY(show_gnet_info_rx_queries)) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%sRX=%u", is_first ? "" : ", ", n->rx_queries); slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, /* '(' */ ")"); } if ( GUI_PROPERTY(show_gnet_info_tx_hits) || GUI_PROPERTY(show_gnet_info_rx_hits) ) { gboolean is_first = TRUE; slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " QHit(" /* ')' */); if (GUI_PROPERTY(show_gnet_info_tx_hits)) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "TX=%u", n->tx_qhits); is_first = FALSE; } if (GUI_PROPERTY(show_gnet_info_rx_hits)) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%sRX=%u", is_first ? "" : ", ", n->rx_qhits); slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, /* '(' */ ")"); } if ( GUI_PROPERTY(show_gnet_info_tx_dropped) || GUI_PROPERTY(show_gnet_info_rx_dropped) ) { gboolean is_first = TRUE; slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " Drop(" /* ')' */); if (GUI_PROPERTY(show_gnet_info_tx_dropped)) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "TX=%u", n->tx_dropped); is_first = FALSE; } if (GUI_PROPERTY(show_gnet_info_rx_dropped)) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%sRX=%u", is_first ? "" : ", ", n->rx_dropped); slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, /* '(' */ ")"); } if ( GUI_PROPERTY(show_gnet_info_shared_size) || GUI_PROPERTY(show_gnet_info_shared_files) ) { gboolean is_first = TRUE; slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " Lib(" /* ')' */); if ( GUI_PROPERTY(show_gnet_info_shared_size) && n->gnet_info_known ) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%s", compact_kb_size(n->gnet_files_count ? n->gnet_kbytes_count : 0, show_metric_units())); is_first = FALSE; } if ( GUI_PROPERTY(show_gnet_info_shared_files) && n->gnet_info_known ) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, "%s#=%u", is_first ? "" : ", ", n->gnet_files_count); } slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, /* '(' */ "%s)", n->gnet_info_known ? "" : "?"); } if (GUI_PROPERTY(show_gnet_info_qrp_stats)) { if (n->has_qrp) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " QRP=%u%%", (guint) (n->qrp_efficiency * 100.0)); if (n->qrt_slots != 0) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " QRT(%s, g=%u, f=%u%%, t=%u%%, e=%u%%)", compact_size(n->qrt_slots, show_metric_units()), n->qrt_generation, n->qrt_fill_ratio, n->qrt_pass_throw, (guint) (n->qrp_efficiency * 100.0)); } if (GUI_PROPERTY(show_gnet_info_dbw)) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " Dup=%u Bad=%u W=%u H=%u S=%u E=%u", n->n_dups, n->n_bad, n->n_weird, n->n_hostile, n->n_spam, n->n_evil); if (GUI_PROPERTY(show_gnet_info_rt)) { slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " RT(avg=%u, last=%u", n->rt_avg, n->rt_last); /* ) */ if (n->tcp_rtt) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, ", tcp=%u", n->tcp_rtt); if (n->udp_rtt) slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, ", udp=%u", n->udp_rtt); slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, /* ( */ ")"); } slen += str_bprintf(&gui_tmp[slen], sizeof(gui_tmp)-slen, " Q=%u,%u%% %s", n->mqueue_count, n->mqueue_percent_used, n->in_tx_swift_control ? " [SW]" : n->in_tx_flow_control ? " [FC]" : ""); a = gui_tmp; } else if (n->is_pseudo) { a = _("No UDP traffic yet"); } else { a = _("Connected"); } break; case GTA_NODE_SHUTDOWN: { str_bprintf(gui_tmp, sizeof(gui_tmp), _("Closing: %s [Stop in %us] RX=%u Q=%u,%u%%"), n->message, n->shutdown_remain, n->received, n->mqueue_count, n->mqueue_percent_used); a = gui_tmp; } break; case GTA_NODE_REMOVING: a = *n->message ? n->message : _("Removing"); break; case GTA_NODE_RECEIVING_HELLO: a = _("Receiving hello"); break; default: a = _("UNKNOWN STATUS"); } return a; }