aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-10-13 14:17:18 +0000
committerChristian Grothoff <christian@grothoff.org>2011-10-13 14:17:18 +0000
commite35111701eb4dc745372f077c2f0d7c991ac1fac (patch)
tree42653444b6b4305e65823c446180783e5858caa5
parent76fbf6c253e780078f4ac5acf43ff89f95c78253 (diff)
downloadgnunet-e35111701eb4dc745372f077c2f0d7c991ac1fac.tar.gz
gnunet-e35111701eb4dc745372f077c2f0d7c991ac1fac.zip
finish
-rw-r--r--src/ats/ats_api_performance.c51
1 files changed, 45 insertions, 6 deletions
diff --git a/src/ats/ats_api_performance.c b/src/ats/ats_api_performance.c
index 4dda50cce..cf948da48 100644
--- a/src/ats/ats_api_performance.c
+++ b/src/ats/ats_api_performance.c
@@ -448,21 +448,60 @@ GNUNET_ATS_change_preference (struct GNUNET_ATS_PerformanceHandle *ph,
448 size_t msize; 448 size_t msize;
449 uint32_t count; 449 uint32_t count;
450 struct PreferenceInformation *pi; 450 struct PreferenceInformation *pi;
451 va_list ap;
452 enum GNUNET_ATS_PreferenceKind kind;
451 453
452 // FIXME: set 'count' 454 count = 0;
455 va_start (ap, peer);
456 while (GNUNET_ATS_PREFERENCE_END != (kind = va_arg (ap, enum GNUNET_ATS_PreferenceKind)))
457 {
458 switch (kind)
459 {
460 case GNUNET_ATS_PREFERENCE_BANDWIDTH:
461 count++;
462 (void) va_arg (ap, double);
463 break;
464 case GNUNET_ATS_PREFERENCE_LATENCY:
465 count++;
466 (void) va_arg (ap, double);
467 break;
468 default:
469 GNUNET_assert (0);
470 }
471 }
472 va_end (ap);
473 msize = count * sizeof (struct PreferenceInformation) +
474 sizeof (struct ChangePreferenceMessage);
453 p = GNUNET_malloc (sizeof (struct PendingMessage) + 475 p = GNUNET_malloc (sizeof (struct PendingMessage) +
454 sizeof (struct ChangePreferenceMessage) + 476 msize);
455 count * sizeof (struct PreferenceInformation));
456 p->size = msize; 477 p->size = msize;
457 p->is_init = GNUNET_NO; 478 p->is_init = GNUNET_NO;
458 m = (struct ReservationRequestMessage*) &p[1]; 479 m = (struct ChangePreferenceMessage*) &p[1];
459 m->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_ADDRESS_UPDATE); 480 m->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_ADDRESS_UPDATE);
460 m->header.size = htons (msize); 481 m->header.size = htons (msize);
461 m->num_preferences = htonl (count); 482 m->num_preferences = htonl (count);
462 m->peer = *peer; 483 m->peer = *peer;
463 pi = (struct PreferenceInformation*) &m[1]; 484 pi = (struct PreferenceInformation*) &m[1];
464 // FIXME: fill in 'pi' 485 count = 0;
465 486 va_start (ap, peer);
487 while (GNUNET_ATS_PREFERENCE_END != (kind = va_arg (ap, enum GNUNET_ATS_PreferenceKind)))
488 {
489 pi[count].preference_kind = htonl (kind);
490 switch (kind)
491 {
492 case GNUNET_ATS_PREFERENCE_BANDWIDTH:
493 pi[count].preference_value = (float) va_arg (ap, double);
494 count++;
495 break;
496 case GNUNET_ATS_PREFERENCE_LATENCY:
497 pi[count].preference_value = (float) va_arg (ap, double);
498 count++;
499 break;
500 default:
501 GNUNET_assert (0);
502 }
503 }
504 va_end (ap);
466 GNUNET_CONTAINER_DLL_insert_tail (ph->pending_head, 505 GNUNET_CONTAINER_DLL_insert_tail (ph->pending_head,
467 ph->pending_tail, 506 ph->pending_tail,
468 p); 507 p);