[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r31873 - gnunet-gtk/src/peerinfo
From: |
gnunet |
Subject: |
[GNUnet-SVN] r31873 - gnunet-gtk/src/peerinfo |
Date: |
Fri, 10 Jan 2014 09:33:20 +0100 |
Author: grothoff
Date: 2014-01-10 09:33:20 +0100 (Fri, 10 Jan 2014)
New Revision: 31873
Modified:
gnunet-gtk/src/peerinfo/gnunet-peerinfo-gtk.c
Log:
misc improvements and fixes to peerinfo GUI
Modified: gnunet-gtk/src/peerinfo/gnunet-peerinfo-gtk.c
===================================================================
--- gnunet-gtk/src/peerinfo/gnunet-peerinfo-gtk.c 2014-01-10 07:48:11 UTC
(rev 31872)
+++ gnunet-gtk/src/peerinfo/gnunet-peerinfo-gtk.c 2014-01-10 08:33:20 UTC
(rev 31873)
@@ -175,6 +175,11 @@
/**
+ * Information we track for each peer outside of the model.
+ */
+struct PeerInfo;
+
+/**
* Information about an address of the peer.
*/
struct PeerAddress
@@ -191,6 +196,11 @@
struct PeerAddress *prev;
/**
+ * Peer this address belongs to.
+ */
+ struct PeerInfo *pi;
+
+ /**
* Reference to the peer in the view.
*/
GtkTreeRowReference *rr;
@@ -211,14 +221,14 @@
char *plugin;
/**
- * Timeout for the current state in the state machine.
+ * Address in string format.
*/
- struct GNUNET_TIME_Absolute state_timeout;
+ char *address_as_string;
/**
- * State of this address in the transport state machine.
+ * ccTLD.
*/
- enum GNUNET_TRANSPORT_PeerState state;
+ char *country_name;
/**
* Number of bytes in @e addr.
@@ -273,6 +283,16 @@
*/
struct PeerAddress *pa_tail;
+ /**
+ * Timeout for the current state in the state machine.
+ */
+ struct GNUNET_TIME_Absolute state_timeout;
+
+ /**
+ * State of this address in the transport state machine.
+ */
+ enum GNUNET_TRANSPORT_PeerState state;
+
};
@@ -394,6 +414,8 @@
}
gtk_tree_row_reference_free (pa->rr);
GNUNET_free_non_null (pa->plugin);
+ GNUNET_free_non_null (pa->address_as_string);
+ GNUNET_free_non_null (pa->country_name);
GNUNET_free (pa);
}
gtk_tree_row_reference_free (info->rr);
@@ -503,7 +525,18 @@
PEERINFO_MC_COUNTRY_FLAG, GNUNET_PEERINFO_GTK_get_flag
(country),
PEERINFO_MC_ADDRESS_AS_STRING, address,
-1);
- GNUNET_free_non_null (country);
+ if (pa->address_ats_active)
+ {
+ get_iter_from_rr (pa->pi->rr, &iter);
+ gtk_tree_store_set (ts, &iter,
+ PEERINFO_MC_COUNTRY_NAME, country,
+ PEERINFO_MC_COUNTRY_FLAG, GNUNET_PEERINFO_GTK_get_flag
(country),
+ PEERINFO_MC_ADDRESS_AS_STRING, address,
+ PEERINFO_MC_PLUGIN_NAME, pa->plugin,
+ -1);
+ }
+ pa->address_as_string = GNUNET_strdup (address);
+ pa->country_name = country;
}
@@ -536,6 +569,7 @@
pa = GNUNET_malloc (sizeof (struct PeerAddress) + addr->address_length);
pa->plugin = GNUNET_strdup (addr->transport_name);
pa->addr = &pa[1];
+ pa->pi = pi;
memcpy (&pa[1], addr->address, addr->address_length);
pa->addr_len = addr->address_length;
GNUNET_CONTAINER_DLL_insert (pi->pa_head,
@@ -546,6 +580,9 @@
GNUNET_assert (gtk_tree_model_get_iter (GTK_TREE_MODEL (ts), &iter, path));
gtk_tree_path_free (path);
gtk_tree_store_append (ts, &aiter, &iter);
+ gtk_tree_store_set (ts, &iter,
+ PEERINFO_MC_PLUGIN_NAME, addr->transport_name,
+ -1);
path = gtk_tree_model_get_path (GTK_TREE_MODEL (ts), &aiter);
pa->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (ts), path);
GNUNET_assert (NULL != pa->rr);
@@ -646,6 +683,8 @@
struct PeerInfo *info;
info = get_peer_info (peer);
+ if (NULL == hello)
+ return;
GNUNET_HELLO_iterate_addresses (hello, GNUNET_NO,
&peer_address_cb, info);
}
@@ -704,6 +743,10 @@
PEERINFO_MC_ATS_SELECTED_STATUS, FALSE,
PEERINFO_MC_BANDWIDTH_IN, (guint) 0,
PEERINFO_MC_BANDWIDTH_OUT, (guint) 0,
+ PEERINFO_MC_COUNTRY_NAME, NULL,
+ PEERINFO_MC_COUNTRY_FLAG, NULL,
+ PEERINFO_MC_ADDRESS_AS_STRING, NULL,
+ PEERINFO_MC_PLUGIN_NAME, NULL,
-1);
}
else
@@ -713,6 +756,10 @@
PEERINFO_MC_ATS_SELECTED_STATUS, TRUE,
PEERINFO_MC_BANDWIDTH_IN, act->ats_in,
PEERINFO_MC_BANDWIDTH_OUT, act->ats_out,
+ PEERINFO_MC_COUNTRY_NAME, act->country_name,
+ PEERINFO_MC_COUNTRY_FLAG, GNUNET_PEERINFO_GTK_get_flag
(act->country_name),
+ PEERINFO_MC_ADDRESS_AS_STRING, act->address_as_string,
+ PEERINFO_MC_PLUGIN_NAME, act->plugin,
-1);
}
}
@@ -736,24 +783,16 @@
struct GNUNET_TIME_Absolute state_timeout)
{
struct PeerInfo *info;
- struct PeerAddress *pa;
- struct PeerAddress *act;
- struct PeerAddress *pre;
GtkTreeIter iter;
gboolean con;
const char *tos;
+ struct PeerAddress *pa;
info = get_peer_info (peer);
- if (NULL == address)
- {
- GNUNET_break (0);
- return;
- }
- pa = get_address (info, address);
- pa->state = state;
- pa->state_timeout = state_timeout;
+ info->state = state;
+ info->state_timeout = state_timeout;
con = (GNUNET_YES == GNUNET_TRANSPORT_is_connected (state));
- get_iter_from_rr (pa->rr, &iter);
+ get_iter_from_rr (info->rr, &iter);
tos = GNUNET_STRINGS_absolute_time_to_string (state_timeout);
gtk_tree_store_set (ts, &iter,
PEERINFO_MC_NEIGHBOUR_CONNECTED_STATUS, con,
@@ -762,60 +801,28 @@
PEERINFO_MC_NEIGHBOUR_STATE_AS_STRING,
GNUNET_TRANSPORT_p2s (state),
PEERINFO_MC_NEIGHBOUR_STATE_TIMEOUT_AS_STRING, tos,
-1);
- act = NULL;
- pre = NULL;
for (pa = info->pa_head; NULL != pa; pa = pa->next)
{
- if (GNUNET_YES == GNUNET_TRANSPORT_is_connected (pa->state))
- {
- GNUNET_break (NULL == act);
- act = pa;
- }
- else if (GNUNET_TRANSPORT_DISCONNECT_FINISHED != pa->state)
- {
- /* remember that we're at least still in the neighbours table */
- pre = pa;
- }
- }
-
- get_iter_from_rr (info->rr, &iter);
- if (NULL == act)
- {
- if (NULL == pre)
- {
- /* peer is not even in neighbours table; remove the LED entirely */
- gtk_tree_store_set (ts, &iter,
- PEERINFO_MC_NEIGHBOUR_CONNECTED_STATUS, FALSE,
-
PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_TIMEOUT_AS_STRING, NULL,
- PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_LED, NULL,
- PEERINFO_MC_NEIGHBOUR_STATE_AS_STRING, NULL,
- PEERINFO_MC_NEIGHBOUR_STATE_TIMEOUT_AS_STRING, NULL,
- -1);
- }
- else
- {
- /* mark peer as down with red LED */
- gtk_tree_store_set (ts, &iter,
- PEERINFO_MC_NEIGHBOUR_CONNECTED_STATUS, FALSE,
-
PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_TIMEOUT_AS_STRING, NULL,
- PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_LED, led_red,
- PEERINFO_MC_NEIGHBOUR_STATE_AS_STRING, NULL,
- PEERINFO_MC_NEIGHBOUR_STATE_TIMEOUT_AS_STRING, NULL,
- -1);
- }
- }
- else
- {
- /* mark peer as up, show details on top-level */
- tos = GNUNET_STRINGS_absolute_time_to_string (state_timeout);
+ get_iter_from_rr (pa->rr, &iter);
gtk_tree_store_set (ts, &iter,
- PEERINFO_MC_NEIGHBOUR_CONNECTED_STATUS, TRUE,
- PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_TIMEOUT_AS_STRING,
tos,
- PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_LED, led_green,
- PEERINFO_MC_NEIGHBOUR_STATE_AS_STRING,
GNUNET_TRANSPORT_p2s (act->state),
- PEERINFO_MC_NEIGHBOUR_STATE_TIMEOUT_AS_STRING, tos,
+ PEERINFO_MC_NEIGHBOUR_CONNECTED_STATUS, FALSE,
+ PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_TIMEOUT_AS_STRING,
NULL,
+ PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_LED, led_red,
+ PEERINFO_MC_NEIGHBOUR_STATE_AS_STRING, NULL,
+ PEERINFO_MC_NEIGHBOUR_STATE_TIMEOUT_AS_STRING, NULL,
-1);
}
+ if (NULL == address)
+ return;
+ pa = get_address (info, address);
+ get_iter_from_rr (pa->rr, &iter);
+ gtk_tree_store_set (ts, &iter,
+ PEERINFO_MC_NEIGHBOUR_CONNECTED_STATUS, con,
+ PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_TIMEOUT_AS_STRING,
con ? tos : NULL,
+ PEERINFO_MC_NEIGHBOUR_CONNECTIVITY_LED, (con ? led_green
: led_red),
+ PEERINFO_MC_NEIGHBOUR_STATE_AS_STRING,
GNUNET_TRANSPORT_p2s (state),
+ PEERINFO_MC_NEIGHBOUR_STATE_TIMEOUT_AS_STRING, tos,
+ -1);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r31873 - gnunet-gtk/src/peerinfo,
gnunet <=