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