[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 ();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r27466 - gnunet/src/ats,
gnunet <=