gnunet-svn
[Top][All Lists]
Advanced

[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);
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]