[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r35154 - gnunet/src/ats
From: |
gnunet |
Subject: |
[GNUnet-SVN] r35154 - gnunet/src/ats |
Date: |
Sun, 8 Feb 2015 14:41:07 +0100 |
Author: grothoff
Date: 2015-02-08 14:41:07 +0100 (Sun, 08 Feb 2015)
New Revision: 35154
Modified:
gnunet/src/ats/gnunet-service-ats_preferences.c
Log:
-adding comments, minor cleanup start
Modified: gnunet/src/ats/gnunet-service-ats_preferences.c
===================================================================
--- gnunet/src/ats/gnunet-service-ats_preferences.c 2015-02-08 13:30:30 UTC
(rev 35153)
+++ gnunet/src/ats/gnunet-service-ats_preferences.c 2015-02-08 13:41:07 UTC
(rev 35154)
@@ -32,20 +32,23 @@
#include "gnunet-service-ats_reservations.h"
#include "ats.h"
-#define LOG(kind,...) GNUNET_log_from (kind, "ats-preferencesx",__VA_ARGS__)
+#define LOG(kind,...) GNUNET_log_from (kind, "ats-preferences",__VA_ARGS__)
/**
- *
+ * How frequently do we age preference values?
*/
#define PREF_AGING_INTERVAL GNUNET_TIME_relative_multiply
(GNUNET_TIME_UNIT_SECONDS, 10)
/**
- *
+ * By which factor do we age preferences expressed during
+ * each #PREF_AGING_INTERVAL?
*/
#define PREF_AGING_FACTOR 0.95
/**
- *
+ * What is the lowest threshold up to which prefernce values
+ * are aged, and below which we consider them zero and thus
+ * no longer subject to aging?
*/
#define PREF_EPSILON 0.01
@@ -158,7 +161,9 @@
/**
- * Hashmap to store peer information for preference normalization
+ * Hashmap to store peer information for preference normalization.
+ * Maps the identity of a peer to a `struct PeerRelative` containing
+ * the current relative preference values for that peer.
*/
static struct GNUNET_CONTAINER_MultiPeerMap *preference_peers;
@@ -245,24 +250,6 @@
/**
- * FIXME
- */
-static int
-update_iterator (void *cls,
- const struct GNUNET_PeerIdentity *key,
- void *value)
-{
- enum GNUNET_ATS_PreferenceKind *kind = cls;
- struct PeerRelative *pr = value;
-
- update_relative_values_for_peer (key,
- *kind,
- pr);
- return GNUNET_OK;
-}
-
-
-/**
* Recalculate preference for a specific ATS property
*
* @param c the preference client
@@ -287,8 +274,10 @@
for (p_cur = c->p_head; NULL != p_cur; p_cur = p_cur->next)
c->f_abs_sum[kind] += p_cur->f_abs[kind];
LOG (GNUNET_ERROR_TYPE_DEBUG,
- "Client %p has sum of total preferences for %s of %.3f\n",
- c->client, GNUNET_ATS_print_preference_type (kind), c->f_abs_sum[kind]);
+ "Client %p has sum of total preferences for %s of %.3f\n",
+ c->client,
+ GNUNET_ATS_print_preference_type (kind),
+ c->f_abs_sum[kind]);
/* For all peers: calculate relative preference */
for (p_cur = c->p_head; NULL != p_cur; p_cur = p_cur->next)
@@ -308,7 +297,24 @@
GNUNET_i2s (&p_cur->id),
p_cur->f_rel[kind]);
}
+}
+
+/**
+ * FIXME
+ */
+static int
+update_iterator (void *cls,
+ const struct GNUNET_PeerIdentity *key,
+ void *value)
+{
+ enum GNUNET_ATS_PreferenceKind *kind = cls;
+ struct PeerRelative *pr = value;
+
+ update_relative_values_for_peer (key,
+ *kind,
+ pr);
+ return GNUNET_OK;
}
@@ -538,11 +544,11 @@
r_cur->id = *peer;
for (i = 0; i < GNUNET_ATS_PreferenceCount; i++)
r_cur->f_rel[i] = DEFAULT_REL_PREFERENCE;
- GNUNET_assert(GNUNET_OK ==
- GNUNET_CONTAINER_multipeermap_put (preference_peers,
- &r_cur->id,
- r_cur,
-
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multipeermap_put (preference_peers,
+ &r_cur->id,
+ r_cur,
+
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
}
/* Update absolute value */
@@ -583,8 +589,6 @@
uint32_t nump;
uint32_t i;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Received PREFERENCE_CHANGE message\n");
msize = ntohs (message->size);
if (msize < sizeof (struct ChangePreferenceMessage))
{
@@ -594,14 +598,18 @@
}
msg = (const struct ChangePreferenceMessage *) message;
nump = ntohl (msg->num_preferences);
- if (msize !=
- sizeof (struct ChangePreferenceMessage) +
- nump * sizeof (struct PreferenceInformation))
+ if ( (msize !=
+ sizeof (struct ChangePreferenceMessage) +
+ nump * sizeof (struct PreferenceInformation)) ||
+ (UINT16_MAX / sizeof (struct PreferenceInformation) < nump) )
{
GNUNET_break (0);
GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
return;
}
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Received PREFERENCE_CHANGE message for peer `%s'\n",
+ GNUNET_i2s (&msg->peer));
GNUNET_STATISTICS_update (GSA_stats,
"# preference change requests processed",
1, GNUNET_NO);
@@ -622,20 +630,21 @@
void
GAS_preference_init ()
{
- int i;
+ unsigned int i;
- preference_peers = GNUNET_CONTAINER_multipeermap_create (10, GNUNET_NO);
+ preference_peers = GNUNET_CONTAINER_multipeermap_create (16,
+ GNUNET_NO);
for (i = 0; i < GNUNET_ATS_PreferenceCount; i++)
defvalues.f_rel[i] = DEFAULT_REL_PREFERENCE;
}
/**
- * Free a peer
+ * Free a peer's `struct PeerRelative`.
*
* @param cls unused
* @param key the key
- * @param value RelativePeer
+ * @param value the `struct PeerRelative` to free.
* @return #GNUNET_OK to continue
*/
static int
@@ -645,13 +654,11 @@
{
struct PeerRelative *rp = value;
- if (GNUNET_YES ==
- GNUNET_CONTAINER_multipeermap_remove (preference_peers,
- key,
- value))
- GNUNET_free (rp);
- else
- GNUNET_break (0);
+ GNUNET_assert (GNUNET_YES ==
+ GNUNET_CONTAINER_multipeermap_remove (preference_peers,
+ key,
+ value));
+ GNUNET_free (rp);
return GNUNET_OK;
}
@@ -666,10 +673,12 @@
while (NULL != (p = next_p))
{
next_p = p->next;
- GNUNET_CONTAINER_DLL_remove(pc->p_head, pc->p_tail, p);
- GNUNET_free(p);
+ GNUNET_CONTAINER_DLL_remove (pc->p_head,
+ pc->p_tail,
+ p);
+ GNUNET_free (p);
}
- GNUNET_free(pc);
+ GNUNET_free (pc);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r35154 - gnunet/src/ats,
gnunet <=