gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r27466 - gnunet/src/ats
Date: Tue, 18 Jun 2013 09:28:42 +0200

Author: wachs
Date: 2013-06-18 09:28:42 +0200 (Tue, 18 Jun 2013)
New Revision: 27466

Modified:
   gnunet/src/ats/gnunet-service-ats-solver_proportional.c
   gnunet/src/ats/gnunet-service-ats-solver_proportional.h
   gnunet/src/ats/gnunet-service-ats_addresses.c
   gnunet/src/ats/gnunet-service-ats_addresses.h
   gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
   gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
   gnunet/src/ats/gnunet-service-ats_normalization.c
   gnunet/src/ats/gnunet-service-ats_normalization.h
Log:
changes


Modified: gnunet/src/ats/gnunet-service-ats-solver_proportional.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats-solver_proportional.c     2013-06-18 
06:47:23 UTC (rev 27465)
+++ gnunet/src/ats/gnunet-service-ats-solver_proportional.c     2013-06-18 
07:28:42 UTC (rev 27466)
@@ -432,24 +432,18 @@
   {
       if (GNUNET_YES == cur->addr->active)
       {
-        t = GAS_normalization_get_preferences (&cur->addr->peer);
-        if (NULL == t)
-        {
-               total_prefs += DEFAULT_REL_PREFERENCE;
-        }
-        else
-        {
-               peer_prefs = 0.0;
-               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));
-        }
+        GNUNET_assert (NULL != (t = GAS_normalization_get_preferences 
(&cur->addr->peer)));
+
+                               peer_prefs = 0.0;
+                               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));
       }
   }
   for (cur = net->head; NULL != cur; cur = cur->next)
@@ -457,21 +451,15 @@
      if (GNUNET_YES == cur->addr->active)
      {
        cur_pref = 0.0;
-       t = GAS_normalization_get_preferences (&cur->addr->peer);
-       if (NULL != t)
-       {
-        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;
-       }
+       GNUNET_assert (NULL != (t = GAS_normalization_get_preferences 
(&cur->addr->peer)));
 
+                        for (c = 0; c < GNUNET_ATS_PreferenceCount; c++)
+                        {
+                                if (c != GNUNET_ATS_PREFERENCE_END)
+                                        cur_pref += t[c];
+                        }
+                        cur_pref /= 2;
+
        assigned_quota_in = min_bw + ((cur_pref / total_prefs) * 
remaining_quota_in);
        assigned_quota_out = min_bw + ((cur_pref / total_prefs) * 
remaining_quota_out);
 
@@ -851,19 +839,16 @@
  * @param score the score
  */
 void
-GAS_proportional_address_change_preference (void *solver,
-                                                                 void *client,
-                                                                 const struct 
GNUNET_PeerIdentity *peer,
-                                                                 enum 
GNUNET_ATS_PreferenceKind kind,
-                                                                 double 
pref_rel)
+GAS_proportional_address_change_preference  (void *solver,
+                                                                               
                                                                                
                 struct GNUNET_CONTAINER_MultiHashMap *addresses,
+                                                                  const struct 
GNUNET_PeerIdentity *peer,
+                                                                  enum 
GNUNET_ATS_PreferenceKind kind,
+                                                                  double 
pref_rel)
 {
   struct GAS_PROPORTIONAL_Handle *s = solver;
   GNUNET_assert (NULL != solver);
-  GNUNET_assert (NULL != client);
   GNUNET_assert (NULL != peer);
-
   distribute_bandwidth_in_all_networks (s);
-
 }
 
 /**

Modified: gnunet/src/ats/gnunet-service-ats-solver_proportional.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats-solver_proportional.h     2013-06-18 
06:47:23 UTC (rev 27465)
+++ gnunet/src/ats/gnunet-service-ats-solver_proportional.h     2013-06-18 
07:28:42 UTC (rev 27466)
@@ -46,7 +46,7 @@
  */
 void
 GAS_proportional_address_change_preference (void *solver,
-                                                                 void *client,
+                                                                               
                                                                                
                struct GNUNET_CONTAINER_MultiHashMap *addresses,
                                                                  const struct 
GNUNET_PeerIdentity *peer,
                                                                  enum 
GNUNET_ATS_PreferenceKind kind,
                                                                  double 
pref_rel);

Modified: gnunet/src/ats/gnunet-service-ats_addresses.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.c       2013-06-18 06:47:23 UTC 
(rev 27465)
+++ gnunet/src/ats/gnunet-service-ats_addresses.c       2013-06-18 07:28:42 UTC 
(rev 27466)
@@ -1296,11 +1296,15 @@
 }
 
 static void
-normalized_preference_changed_cb (const struct GNUNET_PeerIdentity *peer,
+normalized_preference_changed_cb (void *cls,
+                                                                               
                                                        const struct 
GNUNET_PeerIdentity *peer,
                                                                                
                                                enum GNUNET_ATS_PreferenceKind 
kind,
                                                                                
                                                double pref_rel)
 {
-       GNUNET_break (0);
+       GNUNET_assert (NULL != cls);
+       struct GAS_Addresses_Handle *handle = cls;
+  /* Tell solver about update */
+  handle->s_pref (handle->solver, handle->addresses, peer, kind, pref_rel);
 }
 
 
@@ -1320,7 +1324,6 @@
                                  enum GNUNET_ATS_PreferenceKind kind,
                                  float score_abs)
 {
-       double pref_rel;
        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Received `%s' for peer `%s' for client %p\n",
               "CHANGE PREFERENCE",
@@ -1338,9 +1341,8 @@
                   GNUNET_i2s (peer), client);
       return;
   }
-  pref_rel = GAS_normalization_change_preference (client, peer, kind, 
score_abs);
-  /* Tell solver about update */
-  handle->s_pref (handle->solver, client, peer, kind, pref_rel);
+  /* Tell normalization about change, normalization will call callback if 
preference changed */
+  GAS_normalization_change_preference (client, peer, kind, score_abs);
 }
 
 
@@ -1605,7 +1607,7 @@
   GNUNET_assert (NULL != ah->s_del);
   GNUNET_assert (NULL != ah->s_done);
 
-  GAS_normalization_start (&normalized_preference_changed_cb);
+  GAS_normalization_start (&normalized_preference_changed_cb, ah);
   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_addresses.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses.h       2013-06-18 06:47:23 UTC 
(rev 27465)
+++ gnunet/src/ats/gnunet-service-ats_addresses.h       2013-06-18 07:28:42 UTC 
(rev 27466)
@@ -404,10 +404,10 @@
  */
 typedef void
 (*GAS_solver_address_change_preference) (void *solver,
-                                                                               
                                                                                
        void *client,
-                                                                               
                                                                                
        const struct GNUNET_PeerIdentity *peer,
-                                                                               
                                                                                
        enum GNUNET_ATS_PreferenceKind kind,
-                                                                               
                                                                                
        double pref_rel);
+                                                                               
                                                                                
 struct GNUNET_CONTAINER_MultiHashMap *addresses,
+                                                                               
                                                                                
 const struct GNUNET_PeerIdentity *peer,
+                                                                               
                                                                                
 enum GNUNET_ATS_PreferenceKind kind,
+                                                                               
                                                                                
 double pref_rel);
 
 /**
  * Add a single address within a network to the solver

Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2013-06-18 06:47:23 UTC 
(rev 27465)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.c   2013-06-18 07:28:42 UTC 
(rev 27466)
@@ -619,8 +619,11 @@
   /* c 7) Optimize quality */
   /* For all quality metrics, set quality of this address */
   for (c = 0; c < mlp->pv.m_q; c++)
-       mlp_create_problem_set_value (p, p->r_q[c], mlpi->c_b, 
mlpi->q_averaged[c], __LINE__);
+  {
 
+    mlp_create_problem_set_value (p, p->r_q[c], mlpi->c_b, 
mlpi->q_averaged[c], __LINE__);
+  }
+
   return GNUNET_OK;
 }
 
@@ -763,7 +766,7 @@
   /* Adding address independent constraint rows */
   mlp_create_problem_add_invariant_rows (mlp, p);
 
-  /* Adding address independent constraint rows */
+  /* Adding address dependent columns constraint rows */
   GNUNET_CONTAINER_multihashmap_iterate (addresses, 
&mlp_create_problem_add_address_information, mlp);
 
   /* Load the matrix */
@@ -1521,24 +1524,27 @@
  */
 void
 GAS_mlp_address_change_preference (void *solver,
-                                                                               
                                                         void *client,
+                                                                               
                                                         struct 
GNUNET_CONTAINER_MultiHashMap *addresses,
                                                                                
                                                         const struct 
GNUNET_PeerIdentity *peer,
                                                                                
                                                         enum 
GNUNET_ATS_PreferenceKind kind,
                                                                                
                                                         double pref_rel)
 {
-  //struct GAS_MLP_Handle *mlp = solver;
-
+  struct GAS_MLP_Handle *mlp = solver;
   LOG (GNUNET_ERROR_TYPE_DEBUG, "Changing preference for address for peer 
`%s'\n",
                GNUNET_i2s(peer));
 
-  return;
-#if 0
   GNUNET_STATISTICS_update (mlp->stats,"# LP address preference changes", 1, 
GNUNET_NO);
 
-  //struct ATS_Peer *p = mlp_find_peer (mlp, peer);
-  //FIXME to finish implementation
-  /* Here we have to do the matching */
-#endif
+  /* Update the constraints with changed preferences */
+  /* Update quality constraint c7 */
+
+  /* Update relativity constraint c8 */
+
+       /* Problem size changed: new address for peer with pending request */
+       mlp->mlp_prob_updated = GNUNET_YES;
+       if (GNUNET_YES == mlp->mlp_auto_solve)
+               GAS_mlp_solve_problem (solver, addresses);
+  return;
 }
 
 

Modified: gnunet/src/ats/gnunet-service-ats_addresses_mlp.h
===================================================================
--- gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2013-06-18 06:47:23 UTC 
(rev 27465)
+++ gnunet/src/ats/gnunet-service-ats_addresses_mlp.h   2013-06-18 07:28:42 UTC 
(rev 27466)
@@ -436,10 +436,10 @@
  */
 void
 GAS_mlp_address_change_preference (void *solver,
-                                   void *client,
+                                                                               
                                                         struct 
GNUNET_CONTAINER_MultiHashMap *addresses,
                                    const struct GNUNET_PeerIdentity *peer,
                                    enum GNUNET_ATS_PreferenceKind kind,
-                                                                               
                                                        double pref_rel);
+                                   double pref_rel);
 
 
 /**

Modified: gnunet/src/ats/gnunet-service-ats_normalization.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_normalization.c   2013-06-18 06:47:23 UTC 
(rev 27465)
+++ gnunet/src/ats/gnunet-service-ats_normalization.c   2013-06-18 07:28:42 UTC 
(rev 27466)
@@ -130,6 +130,7 @@
 };
 
 GAS_Normalization_preference_changed_cb pref_changed_cb;
+void *pref_changed_cb_cls;
 struct GNUNET_CONTAINER_MultiHashMap *peers;
 struct PreferenceClient *pc_head;
 struct PreferenceClient *pc_tail;
@@ -192,7 +193,7 @@
 
        if ((backup != rp->f_rel[kind]) && (NULL != pref_changed_cb))
        {
-               pref_changed_cb (&rp->id, kind, rp->f_rel[kind]);
+               pref_changed_cb (pref_changed_cb_cls, &rp->id, kind, 
rp->f_rel[kind]);
        }
 
        return rp->f_rel[kind];
@@ -431,11 +432,12 @@
 
 
 void
-GAS_normalization_start (GAS_Normalization_preference_changed_cb pref_ch_cb)
+GAS_normalization_start (GAS_Normalization_preference_changed_cb pref_ch_cb, 
void *pref_ch_cb_cls)
 {
        int i;
        peers = GNUNET_CONTAINER_multihashmap_create(10, GNUNET_NO);
        pref_changed_cb = pref_ch_cb;
+       pref_changed_cb_cls = pref_ch_cb_cls;
        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 06:47:23 UTC 
(rev 27465)
+++ gnunet/src/ats/gnunet-service-ats_normalization.h   2013-06-18 07:28:42 UTC 
(rev 27466)
@@ -35,7 +35,8 @@
 
 
 typedef void
-(*GAS_Normalization_preference_changed_cb) (const struct GNUNET_PeerIdentity 
*peer,
+(*GAS_Normalization_preference_changed_cb) (void *cls,
+                                                                               
                                                                                
                const struct GNUNET_PeerIdentity *peer,
                                                                                
                                                                                
                enum GNUNET_ATS_PreferenceKind kind,
                                                                                
                                                                                
                double pref_rel);
 
@@ -64,7 +65,7 @@
                                         float score_abs);
 
 void
-GAS_normalization_start (GAS_Normalization_preference_changed_cb pref_ch_cb);
+GAS_normalization_start (GAS_Normalization_preference_changed_cb pref_ch_cb, 
void *pref_ch_cb_cls);
 
 void
 GAS_normalization_stop ();




reply via email to

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