diff options
Diffstat (limited to 'src/ats/ats_api_peer_change_preference.c')
-rw-r--r-- | src/ats/ats_api_peer_change_preference.c | 51 |
1 files changed, 22 insertions, 29 deletions
diff --git a/src/ats/ats_api_peer_change_preference.c b/src/ats/ats_api_peer_change_preference.c index 322727e63..7290ebb7a 100644 --- a/src/ats/ats_api_peer_change_preference.c +++ b/src/ats/ats_api_peer_change_preference.c | |||
@@ -49,17 +49,16 @@ struct GNUNET_ATS_InformationRequestContext | |||
49 | GNUNET_ATS_PeerConfigurationInfoCallback info; | 49 | GNUNET_ATS_PeerConfigurationInfoCallback info; |
50 | 50 | ||
51 | void *info_cls; | 51 | void *info_cls; |
52 | 52 | ||
53 | struct GNUNET_PeerIdentity peer; | 53 | struct GNUNET_PeerIdentity peer; |
54 | 54 | ||
55 | GNUNET_SCHEDULER_TaskIdentifier task; | 55 | GNUNET_SCHEDULER_TaskIdentifier task; |
56 | 56 | ||
57 | }; | 57 | }; |
58 | 58 | ||
59 | 59 | ||
60 | static void | 60 | static void |
61 | exec_pcp (void *cls, | 61 | exec_pcp (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) |
62 | const struct GNUNET_SCHEDULER_TaskContext *tc) | ||
63 | { | 62 | { |
64 | struct GNUNET_ATS_InformationRequestContext *irc = cls; | 63 | struct GNUNET_ATS_InformationRequestContext *irc = cls; |
65 | int32_t want_reserv; | 64 | int32_t want_reserv; |
@@ -69,16 +68,13 @@ exec_pcp (void *cls, | |||
69 | 68 | ||
70 | rdelay = GNUNET_TIME_UNIT_ZERO; | 69 | rdelay = GNUNET_TIME_UNIT_ZERO; |
71 | want_reserv = irc->amount; | 70 | want_reserv = irc->amount; |
72 | ar = GNUNET_CONTAINER_multihashmap_get (irc->h->peers, &irc->peer.hashPubKey); | 71 | ar = GNUNET_CONTAINER_multihashmap_get (irc->h->peers, &irc->peer.hashPubKey); |
73 | if (NULL == ar) | 72 | if (NULL == ar) |
74 | { | 73 | { |
75 | /* attempt to change preference on peer that is not connected */ | 74 | /* attempt to change preference on peer that is not connected */ |
76 | /* FIXME: this can happen if the 'service' didn't yet tell us about | 75 | /* FIXME: this can happen if the 'service' didn't yet tell us about |
77 | a new connection, fake it! */ | 76 | * a new connection, fake it! */ |
78 | irc->info (irc->info_cls, | 77 | irc->info (irc->info_cls, &irc->peer, want_reserv, rdelay); |
79 | &irc->peer, | ||
80 | want_reserv, | ||
81 | rdelay); | ||
82 | GNUNET_free (irc); | 78 | GNUNET_free (irc); |
83 | return; | 79 | return; |
84 | } | 80 | } |
@@ -89,21 +85,18 @@ exec_pcp (void *cls, | |||
89 | else if (want_reserv > 0) | 85 | else if (want_reserv > 0) |
90 | { | 86 | { |
91 | rdelay = | 87 | rdelay = |
92 | GNUNET_BANDWIDTH_tracker_get_delay (&ar->available_recv_window, | 88 | GNUNET_BANDWIDTH_tracker_get_delay (&ar->available_recv_window, |
93 | want_reserv); | 89 | want_reserv); |
94 | if (rdelay.rel_value == 0) | 90 | if (rdelay.rel_value == 0) |
95 | got_reserv = want_reserv; | 91 | got_reserv = want_reserv; |
96 | else | 92 | else |
97 | got_reserv = 0; /* all or nothing */ | 93 | got_reserv = 0; /* all or nothing */ |
98 | } | 94 | } |
99 | else | 95 | else |
100 | got_reserv = 0; | 96 | got_reserv = 0; |
101 | GNUNET_BANDWIDTH_tracker_consume (&ar->available_recv_window, got_reserv); | 97 | GNUNET_BANDWIDTH_tracker_consume (&ar->available_recv_window, got_reserv); |
102 | 98 | ||
103 | irc->info (irc->info_cls, | 99 | irc->info (irc->info_cls, &irc->peer, got_reserv, rdelay); |
104 | &irc->peer, | ||
105 | got_reserv, | ||
106 | rdelay); | ||
107 | GNUNET_free (irc); | 100 | GNUNET_free (irc); |
108 | } | 101 | } |
109 | 102 | ||
@@ -125,10 +118,10 @@ exec_pcp (void *cls, | |||
125 | */ | 118 | */ |
126 | struct GNUNET_ATS_InformationRequestContext * | 119 | struct GNUNET_ATS_InformationRequestContext * |
127 | GNUNET_ATS_peer_change_preference (struct GNUNET_ATS_SchedulingHandle *h, | 120 | GNUNET_ATS_peer_change_preference (struct GNUNET_ATS_SchedulingHandle *h, |
128 | const struct GNUNET_PeerIdentity *peer, | 121 | const struct GNUNET_PeerIdentity *peer, |
129 | int32_t amount, uint64_t preference, | 122 | int32_t amount, uint64_t preference, |
130 | GNUNET_ATS_PeerConfigurationInfoCallback | 123 | GNUNET_ATS_PeerConfigurationInfoCallback |
131 | info, void *info_cls) | 124 | info, void *info_cls) |
132 | { | 125 | { |
133 | struct GNUNET_ATS_InformationRequestContext *irc; | 126 | struct GNUNET_ATS_InformationRequestContext *irc; |
134 | 127 | ||
@@ -157,8 +150,8 @@ GNUNET_ATS_peer_change_preference (struct GNUNET_ATS_SchedulingHandle *h, | |||
157 | */ | 150 | */ |
158 | void | 151 | void |
159 | GNUNET_ATS_peer_change_preference_cancel (struct | 152 | GNUNET_ATS_peer_change_preference_cancel (struct |
160 | GNUNET_ATS_InformationRequestContext | 153 | GNUNET_ATS_InformationRequestContext |
161 | *irc) | 154 | *irc) |
162 | { | 155 | { |
163 | GNUNET_SCHEDULER_cancel (irc->task); | 156 | GNUNET_SCHEDULER_cancel (irc->task); |
164 | GNUNET_free (irc); | 157 | GNUNET_free (irc); |
@@ -219,10 +212,10 @@ change_preference_send_continuation (void *cls, int success) | |||
219 | */ | 212 | */ |
220 | struct GNUNET_ATS_InformationRequestContext * | 213 | struct GNUNET_ATS_InformationRequestContext * |
221 | GNUNET_ATS_peer_change_preference (struct GNUNET_ATS_SchedulingHandle *h, | 214 | GNUNET_ATS_peer_change_preference (struct GNUNET_ATS_SchedulingHandle *h, |
222 | const struct GNUNET_PeerIdentity *peer, | 215 | const struct GNUNET_PeerIdentity *peer, |
223 | int32_t amount, uint64_t preference, | 216 | int32_t amount, uint64_t preference, |
224 | GNUNET_ATS_PeerConfigurationInfoCallback | 217 | GNUNET_ATS_PeerConfigurationInfoCallback |
225 | info, void *info_cls) | 218 | info, void *info_cls) |
226 | { | 219 | { |
227 | struct GNUNET_ATS_InformationRequestContext *irc; | 220 | struct GNUNET_ATS_InformationRequestContext *irc; |
228 | struct PeerRecord *pr; | 221 | struct PeerRecord *pr; |
@@ -287,8 +280,8 @@ GNUNET_ATS_peer_change_preference (struct GNUNET_ATS_SchedulingHandle *h, | |||
287 | */ | 280 | */ |
288 | void | 281 | void |
289 | GNUNET_ATS_peer_change_preference_cancel (struct | 282 | GNUNET_ATS_peer_change_preference_cancel (struct |
290 | GNUNET_ATS_InformationRequestContext | 283 | GNUNET_ATS_InformationRequestContext |
291 | *irc) | 284 | *irc) |
292 | { | 285 | { |
293 | struct GNUNET_ATS_SchedulingHandle *h = irc->h; | 286 | struct GNUNET_ATS_SchedulingHandle *h = irc->h; |
294 | struct PeerRecord *pr = irc->pr; | 287 | struct PeerRecord *pr = irc->pr; |