gnunet-svn
[Top][All Lists]
Advanced

[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);




reply via email to

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