[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r17449 - gnunet/src/ats
From: |
gnunet |
Subject: |
[GNUnet-SVN] r17449 - gnunet/src/ats |
Date: |
Thu, 13 Oct 2011 16:17:18 +0200 |
Author: grothoff
Date: 2011-10-13 16:17:18 +0200 (Thu, 13 Oct 2011)
New Revision: 17449
Modified:
gnunet/src/ats/ats_api_performance.c
Log:
finish
Modified: gnunet/src/ats/ats_api_performance.c
===================================================================
--- gnunet/src/ats/ats_api_performance.c 2011-10-13 14:09:24 UTC (rev
17448)
+++ gnunet/src/ats/ats_api_performance.c 2011-10-13 14:17:18 UTC (rev
17449)
@@ -448,21 +448,60 @@
size_t msize;
uint32_t count;
struct PreferenceInformation *pi;
+ va_list ap;
+ enum GNUNET_ATS_PreferenceKind kind;
- // FIXME: set 'count'
+ count = 0;
+ va_start (ap, peer);
+ while (GNUNET_ATS_PREFERENCE_END != (kind = va_arg (ap, enum
GNUNET_ATS_PreferenceKind)))
+ {
+ switch (kind)
+ {
+ case GNUNET_ATS_PREFERENCE_BANDWIDTH:
+ count++;
+ (void) va_arg (ap, double);
+ break;
+ case GNUNET_ATS_PREFERENCE_LATENCY:
+ count++;
+ (void) va_arg (ap, double);
+ break;
+ default:
+ GNUNET_assert (0);
+ }
+ }
+ va_end (ap);
+ msize = count * sizeof (struct PreferenceInformation) +
+ sizeof (struct ChangePreferenceMessage);
p = GNUNET_malloc (sizeof (struct PendingMessage) +
- sizeof (struct ChangePreferenceMessage) +
- count * sizeof (struct PreferenceInformation));
+ msize);
p->size = msize;
p->is_init = GNUNET_NO;
- m = (struct ReservationRequestMessage*) &p[1];
+ m = (struct ChangePreferenceMessage*) &p[1];
m->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_ADDRESS_UPDATE);
m->header.size = htons (msize);
m->num_preferences = htonl (count);
m->peer = *peer;
pi = (struct PreferenceInformation*) &m[1];
- // FIXME: fill in 'pi'
-
+ count = 0;
+ va_start (ap, peer);
+ while (GNUNET_ATS_PREFERENCE_END != (kind = va_arg (ap, enum
GNUNET_ATS_PreferenceKind)))
+ {
+ pi[count].preference_kind = htonl (kind);
+ switch (kind)
+ {
+ case GNUNET_ATS_PREFERENCE_BANDWIDTH:
+ pi[count].preference_value = (float) va_arg (ap, double);
+ count++;
+ break;
+ case GNUNET_ATS_PREFERENCE_LATENCY:
+ pi[count].preference_value = (float) va_arg (ap, double);
+ count++;
+ break;
+ default:
+ GNUNET_assert (0);
+ }
+ }
+ va_end (ap);
GNUNET_CONTAINER_DLL_insert_tail (ph->pending_head,
ph->pending_tail,
p);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17449 - gnunet/src/ats,
gnunet <=