diff options
author | Florian Dold <florian.dold@gmail.com> | 2013-01-17 00:53:11 +0000 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2013-01-17 00:53:11 +0000 |
commit | 21273cba1880b1081b4152ee45b2f4ad6768e639 (patch) | |
tree | 325c93f75c67456b6729e581b9b69cc0bc52df48 /src/consensus/consensus_api.c | |
parent | bdee53dd2cb760e9acd601e251ba59c42c98c02f (diff) | |
download | gnunet-21273cba1880b1081b4152ee45b2f4ad6768e639.tar.gz gnunet-21273cba1880b1081b4152ee45b2f4ad6768e639.zip |
- gnunet-consensus now profiling tool
- work on service implementation, not working yet
Diffstat (limited to 'src/consensus/consensus_api.c')
-rw-r--r-- | src/consensus/consensus_api.c | 50 |
1 files changed, 24 insertions, 26 deletions
diff --git a/src/consensus/consensus_api.c b/src/consensus/consensus_api.c index 25c76b358..5c0494254 100644 --- a/src/consensus/consensus_api.c +++ b/src/consensus/consensus_api.c | |||
@@ -54,11 +54,6 @@ struct QueuedMessage | |||
54 | struct GNUNET_MessageHeader *msg; | 54 | struct GNUNET_MessageHeader *msg; |
55 | 55 | ||
56 | /** | 56 | /** |
57 | * Size of the message in msg. | ||
58 | */ | ||
59 | size_t size; | ||
60 | |||
61 | /** | ||
62 | * Will be called after transmit, if not NULL | 57 | * Will be called after transmit, if not NULL |
63 | */ | 58 | */ |
64 | GNUNET_CONSENSUS_InsertDoneCallback idc; | 59 | GNUNET_CONSENSUS_InsertDoneCallback idc; |
@@ -154,7 +149,7 @@ struct GNUNET_CONSENSUS_Handle | |||
154 | * @param consensus consensus handle | 149 | * @param consensus consensus handle |
155 | */ | 150 | */ |
156 | static void | 151 | static void |
157 | schedule_transmit (struct GNUNET_CONSENSUS_Handle *consensus); | 152 | send_next (struct GNUNET_CONSENSUS_Handle *consensus); |
158 | 153 | ||
159 | 154 | ||
160 | /** | 155 | /** |
@@ -168,16 +163,17 @@ schedule_transmit (struct GNUNET_CONSENSUS_Handle *consensus); | |||
168 | * @param buf where the callee should write the message | 163 | * @param buf where the callee should write the message |
169 | * @return number of bytes written to buf | 164 | * @return number of bytes written to buf |
170 | */ | 165 | */ |
171 | static size_t transmit_queued (void *cls, size_t size, | 166 | static size_t |
172 | void *buf) | 167 | transmit_queued (void *cls, size_t size, |
168 | void *buf) | ||
173 | { | 169 | { |
174 | struct GNUNET_CONSENSUS_Handle *consensus; | 170 | struct GNUNET_CONSENSUS_Handle *consensus; |
175 | struct QueuedMessage *qmsg; | 171 | struct QueuedMessage *qmsg; |
176 | size_t ret_size; | 172 | size_t msg_size; |
177 | |||
178 | printf("transmitting queued\n"); | ||
179 | 173 | ||
180 | consensus = (struct GNUNET_CONSENSUS_Handle *) cls; | 174 | consensus = (struct GNUNET_CONSENSUS_Handle *) cls; |
175 | consensus->th = NULL; | ||
176 | |||
181 | qmsg = consensus->messages_head; | 177 | qmsg = consensus->messages_head; |
182 | GNUNET_CONTAINER_DLL_remove (consensus->messages_head, consensus->messages_tail, qmsg); | 178 | GNUNET_CONTAINER_DLL_remove (consensus->messages_head, consensus->messages_tail, qmsg); |
183 | GNUNET_assert (qmsg); | 179 | GNUNET_assert (qmsg); |
@@ -188,10 +184,14 @@ static size_t transmit_queued (void *cls, size_t size, | |||
188 | { | 184 | { |
189 | qmsg->idc (qmsg->idc_cls, GNUNET_YES); | 185 | qmsg->idc (qmsg->idc_cls, GNUNET_YES); |
190 | } | 186 | } |
187 | return 0; | ||
191 | } | 188 | } |
192 | 189 | ||
193 | memcpy (buf, qmsg->msg, qmsg->size); | 190 | msg_size = ntohs (qmsg->msg->size); |
194 | ret_size = qmsg->size; | 191 | |
192 | GNUNET_assert (size >= msg_size); | ||
193 | |||
194 | memcpy (buf, qmsg->msg, msg_size); | ||
195 | if (NULL != qmsg->idc) | 195 | if (NULL != qmsg->idc) |
196 | { | 196 | { |
197 | qmsg->idc (qmsg->idc_cls, GNUNET_YES); | 197 | qmsg->idc (qmsg->idc_cls, GNUNET_YES); |
@@ -199,9 +199,9 @@ static size_t transmit_queued (void *cls, size_t size, | |||
199 | GNUNET_free (qmsg->msg); | 199 | GNUNET_free (qmsg->msg); |
200 | GNUNET_free (qmsg); | 200 | GNUNET_free (qmsg); |
201 | 201 | ||
202 | schedule_transmit (consensus); | 202 | send_next (consensus); |
203 | 203 | ||
204 | return ret_size; | 204 | return msg_size; |
205 | } | 205 | } |
206 | 206 | ||
207 | 207 | ||
@@ -211,7 +211,7 @@ static size_t transmit_queued (void *cls, size_t size, | |||
211 | * @param consensus consensus handle | 211 | * @param consensus consensus handle |
212 | */ | 212 | */ |
213 | static void | 213 | static void |
214 | schedule_transmit (struct GNUNET_CONSENSUS_Handle *consensus) | 214 | send_next (struct GNUNET_CONSENSUS_Handle *consensus) |
215 | { | 215 | { |
216 | if (NULL != consensus->th) | 216 | if (NULL != consensus->th) |
217 | return; | 217 | return; |
@@ -219,9 +219,10 @@ schedule_transmit (struct GNUNET_CONSENSUS_Handle *consensus) | |||
219 | if (NULL != consensus->messages_head) | 219 | if (NULL != consensus->messages_head) |
220 | { | 220 | { |
221 | LOG (GNUNET_ERROR_TYPE_INFO, "scheduling queued\n"); | 221 | LOG (GNUNET_ERROR_TYPE_INFO, "scheduling queued\n"); |
222 | GNUNET_CLIENT_notify_transmit_ready (consensus->client, consensus->messages_head->size, | 222 | consensus->th = |
223 | GNUNET_TIME_UNIT_FOREVER_REL, | 223 | GNUNET_CLIENT_notify_transmit_ready (consensus->client, ntohs (consensus->messages_head->msg->size), |
224 | GNUNET_NO, &transmit_queued, consensus); | 224 | GNUNET_TIME_UNIT_FOREVER_REL, |
225 | GNUNET_NO, &transmit_queued, consensus); | ||
225 | } | 226 | } |
226 | } | 227 | } |
227 | 228 | ||
@@ -270,8 +271,7 @@ handle_conclude_done (struct GNUNET_CONSENSUS_Handle *consensus, | |||
270 | struct GNUNET_CONSENSUS_ConcludeDoneMessage *msg) | 271 | struct GNUNET_CONSENSUS_ConcludeDoneMessage *msg) |
271 | { | 272 | { |
272 | GNUNET_assert (NULL != consensus->conclude_cb); | 273 | GNUNET_assert (NULL != consensus->conclude_cb); |
273 | consensus->conclude_cb (consensus->conclude_cls, | 274 | consensus->conclude_cb (consensus->conclude_cls, NULL); |
274 | 0, NULL); | ||
275 | consensus->conclude_cb = NULL; | 275 | consensus->conclude_cb = NULL; |
276 | } | 276 | } |
277 | 277 | ||
@@ -356,7 +356,7 @@ transmit_join (void *cls, size_t size, void *buf) | |||
356 | consensus->peers, | 356 | consensus->peers, |
357 | consensus->num_peers * sizeof (struct GNUNET_PeerIdentity)); | 357 | consensus->num_peers * sizeof (struct GNUNET_PeerIdentity)); |
358 | 358 | ||
359 | schedule_transmit (consensus); | 359 | send_next (consensus); |
360 | 360 | ||
361 | GNUNET_CLIENT_receive (consensus->client, &message_handler, consensus, | 361 | GNUNET_CLIENT_receive (consensus->client, &message_handler, consensus, |
362 | GNUNET_TIME_UNIT_FOREVER_REL); | 362 | GNUNET_TIME_UNIT_FOREVER_REL); |
@@ -454,13 +454,12 @@ GNUNET_CONSENSUS_insert (struct GNUNET_CONSENSUS_Handle *consensus, | |||
454 | 454 | ||
455 | qmsg = GNUNET_malloc (sizeof (struct QueuedMessage)); | 455 | qmsg = GNUNET_malloc (sizeof (struct QueuedMessage)); |
456 | qmsg->msg = (struct GNUNET_MessageHeader *) element_msg; | 456 | qmsg->msg = (struct GNUNET_MessageHeader *) element_msg; |
457 | qmsg->size = element_msg_size; | ||
458 | qmsg->idc = idc; | 457 | qmsg->idc = idc; |
459 | qmsg->idc_cls = idc_cls; | 458 | qmsg->idc_cls = idc_cls; |
460 | 459 | ||
461 | GNUNET_CONTAINER_DLL_insert_tail (consensus->messages_head, consensus->messages_tail, qmsg); | 460 | GNUNET_CONTAINER_DLL_insert_tail (consensus->messages_head, consensus->messages_tail, qmsg); |
462 | 461 | ||
463 | schedule_transmit (consensus); | 462 | send_next (consensus); |
464 | } | 463 | } |
465 | 464 | ||
466 | 465 | ||
@@ -500,11 +499,10 @@ GNUNET_CONSENSUS_conclude (struct GNUNET_CONSENSUS_Handle *consensus, | |||
500 | 499 | ||
501 | qmsg = GNUNET_malloc (sizeof (struct QueuedMessage)); | 500 | qmsg = GNUNET_malloc (sizeof (struct QueuedMessage)); |
502 | qmsg->msg = (struct GNUNET_MessageHeader *) conclude_msg; | 501 | qmsg->msg = (struct GNUNET_MessageHeader *) conclude_msg; |
503 | qmsg->size = sizeof (struct GNUNET_CONSENSUS_ConcludeMessage); | ||
504 | 502 | ||
505 | GNUNET_CONTAINER_DLL_insert_tail (consensus->messages_head, consensus->messages_tail, qmsg); | 503 | GNUNET_CONTAINER_DLL_insert_tail (consensus->messages_head, consensus->messages_tail, qmsg); |
506 | 504 | ||
507 | schedule_transmit (consensus); | 505 | send_next (consensus); |
508 | } | 506 | } |
509 | 507 | ||
510 | 508 | ||