aboutsummaryrefslogtreecommitdiff
path: root/src/ats/gnunet-service-ats_performance.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2013-08-29 15:34:53 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2013-08-29 15:34:53 +0000
commitf5136eb1b1a24c5b307ce8123dfc4cc0c85facaf (patch)
tree357763a82d29edd1bf8f533cd294818ff3ce5a9d /src/ats/gnunet-service-ats_performance.c
parent81eaa5a9d5ebe1e61790069a2777178abd1b6a2c (diff)
downloadgnunet-f5136eb1b1a24c5b307ce8123dfc4cc0c85facaf.tar.gz
gnunet-f5136eb1b1a24c5b307ce8123dfc4cc0c85facaf.zip
implemented feedback API, but not yet calling solver
Diffstat (limited to 'src/ats/gnunet-service-ats_performance.c')
-rw-r--r--src/ats/gnunet-service-ats_performance.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/ats/gnunet-service-ats_performance.c b/src/ats/gnunet-service-ats_performance.c
index f0986959c..bb7ed7934 100644
--- a/src/ats/gnunet-service-ats_performance.c
+++ b/src/ats/gnunet-service-ats_performance.c
@@ -649,6 +649,58 @@ GAS_handle_preference_change (void *cls,
649 649
650 650
651/** 651/**
652 * Handle 'preference feedback' messages from clients.
653 *
654 * @param cls unused, NULL
655 * @param client client that sent the request
656 * @param message the request message
657 */
658void
659GAS_handle_preference_feedback (void *cls,
660 struct GNUNET_SERVER_Client *client,
661 const struct GNUNET_MessageHeader *message)
662{
663 const struct FeedbackPreferenceMessage *msg;
664 const struct PreferenceInformation *pi;
665 uint16_t msize;
666 uint32_t nump;
667 uint32_t i;
668
669 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n",
670 "PREFERENCE_FEEDBACK");
671 msize = ntohs (message->size);
672 if (msize < sizeof (struct FeedbackPreferenceMessage))
673 {
674 GNUNET_break (0);
675 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
676 return;
677 }
678 msg = (const struct FeedbackPreferenceMessage *) message;
679 nump = ntohl (msg->num_preferences);
680 if (msize !=
681 sizeof (struct FeedbackPreferenceMessage) +
682 nump * sizeof (struct PreferenceInformation))
683 {
684 GNUNET_break (0);
685 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
686 return;
687 }
688 GNUNET_STATISTICS_update (GSA_stats, "# preference feedbacks requests processed",
689 1, GNUNET_NO);
690 pi = (const struct PreferenceInformation *) &msg[1];
691 for (i = 0; i < nump; i++)
692 GAS_addresses_preference_feedback (GSA_addresses,
693 client,
694 &msg->peer,
695 (enum GNUNET_ATS_PreferenceKind)
696 ntohl (pi[i].preference_kind),
697 pi[i].preference_value);
698 GNUNET_SERVER_receive_done (client, GNUNET_OK);
699}
700
701
702
703/**
652 * Initialize performance subsystem. 704 * Initialize performance subsystem.
653 * 705 *
654 * @param server handle to our server 706 * @param server handle to our server