gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r25517 - gnunet/src/ats


From: gnunet
Subject: [GNUnet-SVN] r25517 - gnunet/src/ats
Date: Mon, 17 Dec 2012 16:08:49 +0100

Author: wachs
Date: 2012-12-17 16:08:48 +0100 (Mon, 17 Dec 2012)
New Revision: 25517

Modified:
   gnunet/src/ats/Makefile.am
   gnunet/src/ats/gnunet-service-ats_addresses.c
   gnunet/src/ats/gnunet-service-ats_addresses_simplistic.c
Log:
changes

Modified: gnunet/src/ats/Makefile.am
===================================================================
--- gnunet/src/ats/Makefile.am  2012-12-17 14:30:44 UTC (rev 25516)
+++ gnunet/src/ats/Makefile.am  2012-12-17 15:08:48 UTC (rev 25517)
@@ -69,6 +69,7 @@
  test_ats_api_scheduling_block_and_reset \
  test_ats_simplistic \
  test_ats_simplistic_switch_networks \
+ test_ats_simplistic_change_preference \
  test_ats_api_performance
 # $(GN_MLP_TEST) \
 # $(GN_MLP_TEST_AVG) \
@@ -159,6 +160,14 @@
   $(top_builddir)/src/testing/libgnunettesting.la \
   $(top_builddir)/src/ats/libgnunetats.la
 
+test_ats_simplistic_change_preference_SOURCES = \
+ test_ats_simplistic_change_preference.c test_ats_api_common.c
+test_ats_simplistic_change_preference_LDADD = \
+  $(top_builddir)/src/util/libgnunetutil.la \
+  $(top_builddir)/src/testing/libgnunettesting.la \
+  $(top_builddir)/src/ats/libgnunetats.la
+
+
 if HAVE_LIBGLPK
 #test_ats_mlp_SOURCES = \
 # $(GN_MLP_SRC) \

Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c       2012-12-17 14:30:44 UTC 
(rev 25516)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c       2012-12-17 15:08:48 UTC 
(rev 25517)
@@ -942,6 +942,16 @@
   if (GNUNET_NO == handle->running)
     return;
 
+  if (GNUNET_NO == GNUNET_CONTAINER_multihashmap_contains (handle->addresses,
+                                                          &peer->hashPubKey))
+  {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                  "Received `%s' for unknown peer `%s' from client %p\n",
+                  "CHANGE PREFERENCE",
+                  GNUNET_i2s (peer), client);
+      return;
+  }
+
   /* Tell solver about update */
   handle->s_pref (handle->solver, client, peer, kind, score);
 }

Modified: gnunet/src/ats/gnunet-service-ats_addresses_simplistic.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_simplistic.c    2012-12-17 
14:30:44 UTC (rev 25516)
+++ gnunet/src/ats/gnunet-service-ats_addresses_simplistic.c    2012-12-17 
15:08:48 UTC (rev 25517)
@@ -96,6 +96,9 @@
    * Callback cls
    */
   void *bw_changed_cls;
+
+  struct PreferenceClient *pc_head;
+  struct PreferenceClient *pc_tail;
 };
 
 struct Network
@@ -154,6 +157,13 @@
   struct ATS_Address *addr;
 };
 
+struct PreferenceClient
+{
+  struct PreferenceClient *prev;
+  struct PreferenceClient *next;
+   void *client;
+};
+
 /**
  * Init the simplistic problem solving component
  *
@@ -227,6 +237,8 @@
 GAS_simplistic_done (void *solver)
 {
   struct GAS_SIMPLISTIC_Handle *s = solver;
+  struct PreferenceClient *pc;
+  struct PreferenceClient *next_pc;
   struct AddressWrapper *cur;
   struct AddressWrapper *next;
   int c;
@@ -278,8 +290,15 @@
                 s->active_addresses);
     GNUNET_break (0);
   }
+  GNUNET_free (s->network_entries);
 
-  GNUNET_free (s->network_entries);
+  next_pc = s->pc_head;
+  while (NULL != (pc = next_pc))
+  {
+      next_pc = pc->next;
+      GNUNET_CONTAINER_DLL_remove (s->pc_head, s->pc_tail, pc);
+      GNUNET_free (pc);
+  }
   GNUNET_free (s);
 }
 
@@ -855,7 +874,33 @@
                                    enum GNUNET_ATS_PreferenceKind kind,
                                    float score)
 {
+  struct GAS_SIMPLISTIC_Handle *s = solver;
+  struct PreferenceClient *cur;
 
+  GNUNET_assert (NULL != solver);
+  GNUNET_assert (NULL != client);
+  GNUNET_assert (NULL != peer);
+
+  LOG (GNUNET_ERROR_TYPE_ERROR, "Client %p changes preference for peer `%s' 
%d\n",
+                                client,
+                                GNUNET_i2s (peer),
+                                score);
+
+  for (cur = s->pc_head; NULL != cur; cur = cur->next)
+  {
+      if (client == cur->client)
+        break;
+  }
+
+  if (NULL == cur)
+  {
+    cur = GNUNET_malloc (sizeof (struct PreferenceClient));
+    cur->client = client;
+    GNUNET_CONTAINER_DLL_insert (s->pc_head, s->pc_tail, cur);
+  }
+
+
+
 }
 
 /* end of gnunet-service-ats_addresses_simplistic.c */




reply via email to

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