diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-10-17 07:12:24 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-10-17 07:12:24 +0000 |
commit | 4b5e8dcb8d6f0d29fffb823e600c73be404d9b39 (patch) | |
tree | 403065ddb639f9322082d7f332558b389f61d654 /src | |
parent | 206531cbf35d8a7f017857ae87b305ccf27e8ef7 (diff) | |
download | gnunet-4b5e8dcb8d6f0d29fffb823e600c73be404d9b39.tar.gz gnunet-4b5e8dcb8d6f0d29fffb823e600c73be404d9b39.zip |
parse preference change messages
Diffstat (limited to 'src')
-rw-r--r-- | src/ats/gnunet-service-ats_addresses.c | 12 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_addresses.h | 10 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_performance.c | 27 |
3 files changed, 46 insertions, 3 deletions
diff --git a/src/ats/gnunet-service-ats_addresses.c b/src/ats/gnunet-service-ats_addresses.c index 5eb6a4e6e..9c504b26c 100644 --- a/src/ats/gnunet-service-ats_addresses.c +++ b/src/ats/gnunet-service-ats_addresses.c | |||
@@ -279,6 +279,17 @@ GAS_addresses_request_address (const struct GNUNET_PeerIdentity *peer) | |||
279 | } | 279 | } |
280 | 280 | ||
281 | 281 | ||
282 | // FIXME: this function should likely end up in the LP-subsystem and | ||
283 | // not with 'addresses' in the future... | ||
284 | void | ||
285 | GAS_addresses_change_preference (const struct GNUNET_PeerIdentity *peer, | ||
286 | enum GNUNET_ATS_PreferenceKind kind, | ||
287 | float score) | ||
288 | { | ||
289 | // do nothing for now... | ||
290 | } | ||
291 | |||
292 | |||
282 | /** | 293 | /** |
283 | * Initialize address subsystem. | 294 | * Initialize address subsystem. |
284 | * | 295 | * |
@@ -321,7 +332,6 @@ free_address_it (void *cls, | |||
321 | } | 332 | } |
322 | 333 | ||
323 | 334 | ||
324 | |||
325 | /** | 335 | /** |
326 | * Shutdown address subsystem. | 336 | * Shutdown address subsystem. |
327 | */ | 337 | */ |
diff --git a/src/ats/gnunet-service-ats_addresses.h b/src/ats/gnunet-service-ats_addresses.h index 849e9b31a..fdb3df678 100644 --- a/src/ats/gnunet-service-ats_addresses.h +++ b/src/ats/gnunet-service-ats_addresses.h | |||
@@ -29,6 +29,8 @@ | |||
29 | 29 | ||
30 | #include "gnunet_util_lib.h" | 30 | #include "gnunet_util_lib.h" |
31 | #include "gnunet_transport_service.h" // FIXME... | 31 | #include "gnunet_transport_service.h" // FIXME... |
32 | #include "gnunet_ats_service.h" | ||
33 | #include "ats.h" | ||
32 | 34 | ||
33 | /** | 35 | /** |
34 | * Initialize address subsystem. | 36 | * Initialize address subsystem. |
@@ -73,6 +75,14 @@ void | |||
73 | GAS_addresses_request_address (const struct GNUNET_PeerIdentity *peer); | 75 | GAS_addresses_request_address (const struct GNUNET_PeerIdentity *peer); |
74 | 76 | ||
75 | 77 | ||
78 | // FIXME: this function should likely end up in the LP-subsystem and | ||
79 | // not with 'addresses' in the future... | ||
80 | void | ||
81 | GAS_addresses_change_preference (const struct GNUNET_PeerIdentity *peer, | ||
82 | enum GNUNET_ATS_PreferenceKind kind, | ||
83 | float score); | ||
84 | |||
85 | |||
76 | /* FIXME: add performance request API */ | 86 | /* FIXME: add performance request API */ |
77 | 87 | ||
78 | #endif | 88 | #endif |
diff --git a/src/ats/gnunet-service-ats_performance.c b/src/ats/gnunet-service-ats_performance.c index 8a1ad611c..3a4acc641 100644 --- a/src/ats/gnunet-service-ats_performance.c +++ b/src/ats/gnunet-service-ats_performance.c | |||
@@ -25,6 +25,7 @@ | |||
25 | * @author Christian Grothoff | 25 | * @author Christian Grothoff |
26 | */ | 26 | */ |
27 | #include "platform.h" | 27 | #include "platform.h" |
28 | #include "gnunet-service-ats_addresses.h" | ||
28 | #include "gnunet-service-ats_performance.h" | 29 | #include "gnunet-service-ats_performance.h" |
29 | #include "gnunet-service-ats_reservations.h" | 30 | #include "gnunet-service-ats_reservations.h" |
30 | #include "ats.h" | 31 | #include "ats.h" |
@@ -242,9 +243,31 @@ void | |||
242 | GAS_handle_preference_change (void *cls, struct GNUNET_SERVER_Client *client, | 243 | GAS_handle_preference_change (void *cls, struct GNUNET_SERVER_Client *client, |
243 | const struct GNUNET_MessageHeader *message) | 244 | const struct GNUNET_MessageHeader *message) |
244 | { | 245 | { |
245 | // const struct ChangePreferenceMessage * msg = (const struct ChangePreferenceMessage *) message; | 246 | const struct ChangePreferenceMessage * msg; |
247 | const struct PreferenceInformation *pi; | ||
248 | uint16_t msize; | ||
249 | uint32_t nump; | ||
250 | uint32_t i; | ||
251 | |||
246 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n", "PREFERENCE_CHANGE"); | 252 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n", "PREFERENCE_CHANGE"); |
247 | // FIXME: implement later (we can safely ignore these for now) | 253 | msize = ntohs (message->size); |
254 | if (msize < sizeof (struct ChangePreferenceMessage)) | ||
255 | { | ||
256 | GNUNET_break (0); | ||
257 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | ||
258 | } | ||
259 | msg = (const struct ChangePreferenceMessage *) message; | ||
260 | nump = ntohl (msg->num_preferences); | ||
261 | if (msize != sizeof (struct ChangePreferenceMessage) * nump * sizeof (struct PreferenceInformation)) | ||
262 | { | ||
263 | GNUNET_break (0); | ||
264 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | ||
265 | } | ||
266 | pi = (const struct PreferenceInformation *) &msg[1]; | ||
267 | for (i=0;i<nump;i++) | ||
268 | GAS_addresses_change_preference (&msg->peer, | ||
269 | (enum GNUNET_ATS_PreferenceKind) ntohl (pi[i].preference_kind), | ||
270 | pi[i].preference_value); | ||
248 | GNUNET_SERVER_receive_done (client, GNUNET_OK); | 271 | GNUNET_SERVER_receive_done (client, GNUNET_OK); |
249 | } | 272 | } |
250 | 273 | ||