diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2013-08-29 15:34:53 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2013-08-29 15:34:53 +0000 |
commit | f5136eb1b1a24c5b307ce8123dfc4cc0c85facaf (patch) | |
tree | 357763a82d29edd1bf8f533cd294818ff3ce5a9d /src/ats/gnunet-service-ats_performance.c | |
parent | 81eaa5a9d5ebe1e61790069a2777178abd1b6a2c (diff) | |
download | gnunet-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.c | 52 |
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 | */ | ||
658 | void | ||
659 | GAS_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 |