gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r27464 - gnunet/src/ats
Date: Tue, 18 Jun 2013 08:29:10 +0200

Author: wachs
Date: 2013-06-18 08:29:10 +0200 (Tue, 18 Jun 2013)
New Revision: 27464

Modified:
   gnunet/src/ats/Makefile.am
   gnunet/src/ats/gnunet-service-ats-solver_proportional.c
   gnunet/src/ats/gnunet-service-ats_addresses.c
   gnunet/src/ats/gnunet-service-ats_normalization.c
   gnunet/src/ats/gnunet-service-ats_normalization.h
Log:


Modified: gnunet/src/ats/Makefile.am
===================================================================
--- gnunet/src/ats/Makefile.am  2013-06-18 02:51:15 UTC (rev 27463)
+++ gnunet/src/ats/Makefile.am  2013-06-18 06:29:10 UTC (rev 27464)
@@ -71,10 +71,10 @@
  test_ats_api_scheduling_destroy_session \
  test_ats_api_scheduling_destroy_inbound_connection \
  test_ats_api_scheduling_block_and_reset \
+ test_ats_change_preference \
  test_ats_simplistic \
  test_ats_simplistic_switch_networks \
  test_ats_simplistic_change_preference \
- test_ats_simplistic_pref_aging \
  test_ats_api_performance_list_addresses \
  test_ats_api_performance_address_info \
  $(GN_MLP_TEST) $(GN_MLP_PERF) $(GN_MLP_TEST_UPDATE)
@@ -198,13 +198,13 @@
   $(top_builddir)/src/testing/libgnunettesting.la \
   $(top_builddir)/src/ats/libgnunetats.la
 
-test_ats_simplistic_pref_aging_SOURCES = \
- test_ats_simplistic_pref_aging.c test_ats_api_common.c
-test_ats_simplistic_pref_aging_LDADD = \
+test_ats_change_preference_SOURCES = \
+ test_ats_change_preference.c test_ats_api_common.c
+test_ats_change_preference_LDADD = \
   $(top_builddir)/src/util/libgnunetutil.la \
   $(top_builddir)/src/testing/libgnunettesting.la \
-  $(top_builddir)/src/ats/libgnunetats.la  
-
+  $(top_builddir)/src/ats/libgnunetats.la
+ 
 if HAVE_LIBGLPK
 test_ats_mlp_SOURCES = \
   $(GN_MLP_SRC) test_ats_mlp.c test_ats_api_common.c

Modified: gnunet/src/ats/gnunet-service-ats-solver_proportional.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats-solver_proportional.c     2013-06-18 
02:51:15 UTC (rev 27463)
+++ gnunet/src/ats/gnunet-service-ats-solver_proportional.c     2013-06-18 
06:29:10 UTC (rev 27464)
@@ -434,12 +434,20 @@
       {
         t = GAS_normalization_get_preferences (&cur->addr->peer);
         if (NULL == t)
+        {
                total_prefs += DEFAULT_REL_PREFERENCE;
+        }
         else
         {
                peer_prefs = 0.0;
-               for (c = 1; c < GNUNET_ATS_PreferenceCount; c++)
-                       peer_prefs += t[c];
+               for (c = 0; c < GNUNET_ATS_PreferenceCount; c++)
+               {
+                       if (c != GNUNET_ATS_PREFERENCE_END)
+                       {
+                               //fprintf (stderr, "VALUE[%u] %s %.3f \n", c, 
GNUNET_i2s (&cur->addr->peer), t[c]);
+                               peer_prefs += t[c];
+                       }
+               }
                total_prefs += (peer_prefs / (GNUNET_ATS_PreferenceCount -1));
         }
       }
@@ -452,12 +460,17 @@
        t = GAS_normalization_get_preferences (&cur->addr->peer);
        if (NULL != t)
        {
-        for (c = 1; c < GNUNET_ATS_PreferenceCount; c++)
-                cur_pref += t[c];
+        for (c = 0; c < GNUNET_ATS_PreferenceCount; c++)
+        {
+                if (c != GNUNET_ATS_PREFERENCE_END)
+                        cur_pref += t[c];
+        }
         cur_pref /= 2;
        }
        else
+       {
         cur_pref = DEFAULT_REL_PREFERENCE;
+       }
 
        assigned_quota_in = min_bw + ((cur_pref / total_prefs) * 
remaining_quota_in);
        assigned_quota_out = min_bw + ((cur_pref / total_prefs) * 
remaining_quota_out);

Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c       2013-06-18 02:51:15 UTC 
(rev 27463)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c       2013-06-18 06:29:10 UTC 
(rev 27464)
@@ -1295,7 +1295,15 @@
                                               NULL));
 }
 
+static void
+normalized_preference_changed_cb (const struct GNUNET_PeerIdentity *peer,
+                                                                               
                                                enum GNUNET_ATS_PreferenceKind 
kind,
+                                                                               
                                                double pref_rel)
+{
+       GNUNET_break (0);
+}
 
+
 /**
  * Change the preference for a peer
  *
@@ -1597,7 +1605,7 @@
   GNUNET_assert (NULL != ah->s_del);
   GNUNET_assert (NULL != ah->s_done);
 
-  GAS_normalization_start();
+  GAS_normalization_start (&normalized_preference_changed_cb);
   quota_count = load_quotas(cfg, quotas_in, quotas_out, 
GNUNET_ATS_NetworkTypeCount);
 
   ah->solver = ah->s_init (cfg, stats, quotas, quotas_in, quotas_out, 
quota_count, &bandwidth_changed_cb, ah);

Modified: gnunet/src/ats/gnunet-service-ats_normalization.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_normalization.c   2013-06-18 02:51:15 UTC 
(rev 27463)
+++ gnunet/src/ats/gnunet-service-ats_normalization.c   2013-06-18 06:29:10 UTC 
(rev 27464)
@@ -129,7 +129,7 @@
   struct GNUNET_PeerIdentity id;
 };
 
-
+GAS_Normalization_preference_changed_cb pref_changed_cb;
 struct GNUNET_CONTAINER_MultiHashMap *peers;
 struct PreferenceClient *pc_head;
 struct PreferenceClient *pc_tail;
@@ -144,6 +144,7 @@
        struct PreferencePeer *p_cur;
        struct PeerRelative *rp;
        double f_rel_total;
+       double backup;
        unsigned int count;
 
        f_rel_total = 0.0;
@@ -166,33 +167,35 @@
                }
        }
 
-       if (0 < count)
+       /* Find a client */
+       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%u clients have a total relative 
preference for peer `%s''s `%s' of %.3f\n",
+                       count,
+                       GNUNET_i2s (id),
+                       GNUNET_ATS_print_preference_type (kind),
+                       f_rel_total);
+       if (NULL != (rp = GNUNET_CONTAINER_multihashmap_get (peers, 
&id->hashPubKey)))
        {
-               /* Find a client */
-               f_rel_total /= count;
-               GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "%u clients have a total 
relative preference for peer `%s''s%s is %.3f\n",
-                               count,
-                               GNUNET_i2s (id),
-                               GNUNET_ATS_print_preference_type (kind),
-                               f_rel_total);
-               if (NULL != (rp = GNUNET_CONTAINER_multihashmap_get (peers, 
&id->hashPubKey)))
+               backup = rp->f_rel[kind];
+               if (0 < count)
                {
-                       rp->f_rel[kind] = f_rel_total;
+                       rp->f_rel[kind] = f_rel_total / count;
                }
-               return f_rel_total;
+               else
+               {
+                       rp->f_rel[kind] = DEFAULT_REL_PREFERENCE;
+               }
        }
        else
        {
-               GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "No clients have a total 
relative preference for peer `%s''s%s\n",
-                               count,
-                               GNUNET_i2s (id),
-                               GNUNET_ATS_print_preference_type (kind));
-               if (NULL != (rp = GNUNET_CONTAINER_multihashmap_get (peers, 
&id->hashPubKey)))
-               {
-                       rp->f_rel[kind] = DEFAULT_REL_PREFERENCE;
-               }
                return DEFAULT_REL_PREFERENCE;
        }
+
+       if ((backup != rp->f_rel[kind]) && (NULL != pref_changed_cb))
+       {
+               pref_changed_cb (&rp->id, kind, rp->f_rel[kind]);
+       }
+
+       return rp->f_rel[kind];
 }
 
 /**
@@ -426,12 +429,13 @@
        return rp->f_rel;
 }
 
+
 void
-GAS_normalization_start ()
+GAS_normalization_start (GAS_Normalization_preference_changed_cb pref_ch_cb)
 {
        int i;
        peers = GNUNET_CONTAINER_multihashmap_create(10, GNUNET_NO);
-
+       pref_changed_cb = pref_ch_cb;
        for (i = 0; i < GNUNET_ATS_PreferenceCount; i++)
                defvalues.f_rel[i] = DEFAULT_REL_PREFERENCE;
        return;

Modified: gnunet/src/ats/gnunet-service-ats_normalization.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_normalization.h   2013-06-18 02:51:15 UTC 
(rev 27463)
+++ gnunet/src/ats/gnunet-service-ats_normalization.h   2013-06-18 06:29:10 UTC 
(rev 27464)
@@ -33,6 +33,12 @@
 #define DEFAULT_REL_PREFERENCE 1.0
 #define DEFAULT_ABS_PREFERENCE 0.0
 
+
+typedef void
+(*GAS_Normalization_preference_changed_cb) (const struct GNUNET_PeerIdentity 
*peer,
+                                                                               
                                                                                
                enum GNUNET_ATS_PreferenceKind kind,
+                                                                               
                                                                                
                double pref_rel);
+
 /**
  * Get the normalized preference values for a specific peer
  *
@@ -58,7 +64,7 @@
                                         float score_abs);
 
 void
-GAS_normalization_start ();
+GAS_normalization_start (GAS_Normalization_preference_changed_cb pref_ch_cb);
 
 void
 GAS_normalization_stop ();




reply via email to

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