aboutsummaryrefslogtreecommitdiff
path: root/src/consensus/consensus_api.c
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2012-11-28 16:32:15 +0000
committerFlorian Dold <florian.dold@gmail.com>2012-11-28 16:32:15 +0000
commit12dc2e752c7faf28d63049b2b308ce5316df8dc3 (patch)
tree73004461bacd772a604c593b2a06afb4bbeaac4e /src/consensus/consensus_api.c
parentdbb17853368c11b2a9a4a19c6e38f8ef02d2f258 (diff)
downloadgnunet-12dc2e752c7faf28d63049b2b308ce5316df8dc3.tar.gz
gnunet-12dc2e752c7faf28d63049b2b308ce5316df8dc3.zip
dummy consensus service
Diffstat (limited to 'src/consensus/consensus_api.c')
-rw-r--r--src/consensus/consensus_api.c32
1 files changed, 14 insertions, 18 deletions
diff --git a/src/consensus/consensus_api.c b/src/consensus/consensus_api.c
index b1de10edd..90b0fdf16 100644
--- a/src/consensus/consensus_api.c
+++ b/src/consensus/consensus_api.c
@@ -124,7 +124,7 @@ handle_new_element(struct GNUNET_CONSENSUS_Handle *consensus,
124 element.type = msg->element_type; 124 element.type = msg->element_type;
125 element.size = msg->header.size - sizeof (struct GNUNET_CONSENSUS_ElementMessage); 125 element.size = msg->header.size - sizeof (struct GNUNET_CONSENSUS_ElementMessage);
126 element.data = &msg[1]; 126 element.data = &msg[1];
127 consensus->new_element_cb(consensus->new_element_cls, &element); 127 consensus->new_element_cb (consensus->new_element_cls, &element);
128} 128}
129 129
130static void 130static void
@@ -152,12 +152,15 @@ message_handler (void *cls, const struct GNUNET_MessageHeader *msg)
152{ 152{
153 struct GNUNET_CONSENSUS_Handle *consensus = cls; 153 struct GNUNET_CONSENSUS_Handle *consensus = cls;
154 154
155 LOG (GNUNET_ERROR_TYPE_INFO, "received message from consensus service\n");
156
155 if (msg == NULL) 157 if (msg == NULL)
156 { 158 {
157 /* Error, timeout, death */ 159 /* Error, timeout, death */
160 LOG (GNUNET_ERROR_TYPE_ERROR, "error receiving\n");
158 GNUNET_CLIENT_disconnect (consensus->client); 161 GNUNET_CLIENT_disconnect (consensus->client);
159 consensus->client = NULL; 162 consensus->client = NULL;
160 consensus->new_element_cb(NULL, NULL); 163 consensus->new_element_cb (NULL, NULL);
161 if (NULL != consensus->idc) 164 if (NULL != consensus->idc)
162 { 165 {
163 consensus->idc(consensus->idc_cls, GNUNET_NO); 166 consensus->idc(consensus->idc_cls, GNUNET_NO);
@@ -170,10 +173,10 @@ message_handler (void *cls, const struct GNUNET_MessageHeader *msg)
170 switch (ntohs(msg->type)) 173 switch (ntohs(msg->type))
171 { 174 {
172 case GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_RECEIVED_ELEMENT: 175 case GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_RECEIVED_ELEMENT:
173 handle_new_element(consensus, (struct GNUNET_CONSENSUS_ElementMessage *) msg); 176 handle_new_element (consensus, (struct GNUNET_CONSENSUS_ElementMessage *) msg);
174 break; 177 break;
175 case GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_CONCLUDE_DONE: 178 case GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_CONCLUDE_DONE:
176 handle_conclude_done(consensus, (struct GNUNET_CONSENSUS_ConcludeDoneMessage *) msg); 179 handle_conclude_done (consensus, (struct GNUNET_CONSENSUS_ConcludeDoneMessage *) msg);
177 break; 180 break;
178 default: 181 default:
179 LOG(GNUNET_ERROR_TYPE_WARNING, "did not understand message type sent by service, ignoring"); 182 LOG(GNUNET_ERROR_TYPE_WARNING, "did not understand message type sent by service, ignoring");
@@ -220,16 +223,16 @@ transmit_insert (void *cls, size_t size, void *buf)
220 223
221 msg->header.type = htons (GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_INSERT); 224 msg->header.type = htons (GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_INSERT);
222 msg->header.size = htons (msize); 225 msg->header.size = htons (msize);
223 memcpy(&msg[1], 226 memcpy (&msg[1],
224 consensus->insert_element->data, 227 consensus->insert_element->data,
225 consensus->insert_element->size); 228 consensus->insert_element->size);
226 229
227 230
228 idc = consensus->idc; 231 idc = consensus->idc;
229 consensus->idc = NULL; 232 consensus->idc = NULL;
230 idc_cls = consensus->idc_cls; 233 idc_cls = consensus->idc_cls;
231 consensus->idc_cls = NULL; 234 consensus->idc_cls = NULL;
232 idc(idc_cls, GNUNET_YES); 235 idc (idc_cls, GNUNET_YES);
233 236
234 return msize; 237 return msize;
235} 238}
@@ -253,10 +256,10 @@ transmit_join (void *cls, size_t size, void *buf)
253 struct GNUNET_CONSENSUS_Handle *consensus; 256 struct GNUNET_CONSENSUS_Handle *consensus;
254 int msize; 257 int msize;
255 258
256 LOG(GNUNET_ERROR_TYPE_DEBUG, "transmitting CLIENT_JOIN to service\n");
257
258 GNUNET_assert (NULL != buf); 259 GNUNET_assert (NULL != buf);
259 260
261 LOG (GNUNET_ERROR_TYPE_DEBUG, "transmitting join message\n");
262
260 consensus = cls; 263 consensus = cls;
261 consensus->th = NULL; 264 consensus->th = NULL;
262 consensus->joined = 1; 265 consensus->joined = 1;
@@ -283,7 +286,6 @@ transmit_join (void *cls, size_t size, void *buf)
283 GNUNET_NO, &transmit_insert, consensus); 286 GNUNET_NO, &transmit_insert, consensus);
284 } 287 }
285 288
286
287 GNUNET_CLIENT_receive (consensus->client, &message_handler, consensus, 289 GNUNET_CLIENT_receive (consensus->client, &message_handler, consensus,
288 GNUNET_TIME_UNIT_FOREVER_REL); 290 GNUNET_TIME_UNIT_FOREVER_REL);
289 291
@@ -321,7 +323,7 @@ transmit_conclude (void *cls, size_t size, void *buf)
321 msg->header.type = htons (GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_CONCLUDE); 323 msg->header.type = htons (GNUNET_MESSAGE_TYPE_CONSENSUS_CLIENT_CONCLUDE);
322 msg->header.size = htons (msize); 324 msg->header.size = htons (msize);
323 msg->timeout = 325 msg->timeout =
324 GNUNET_TIME_relative_hton(GNUNET_TIME_absolute_get_remaining(consensus->conclude_deadline)); 326 GNUNET_TIME_relative_hton (GNUNET_TIME_absolute_get_remaining(consensus->conclude_deadline));
325 327
326 return msize; 328 return msize;
327} 329}
@@ -386,7 +388,6 @@ GNUNET_CONSENSUS_create (const struct GNUNET_CONFIGURATION_Handle *cfg,
386 struct GNUNET_CONSENSUS_Handle *consensus; 388 struct GNUNET_CONSENSUS_Handle *consensus;
387 size_t join_message_size; 389 size_t join_message_size;
388 390
389
390 consensus = GNUNET_malloc (sizeof (struct GNUNET_CONSENSUS_Handle)); 391 consensus = GNUNET_malloc (sizeof (struct GNUNET_CONSENSUS_Handle));
391 consensus->cfg = cfg; 392 consensus->cfg = cfg;
392 consensus->new_element_cb = new_element_cb; 393 consensus->new_element_cb = new_element_cb;
@@ -394,15 +395,12 @@ GNUNET_CONSENSUS_create (const struct GNUNET_CONFIGURATION_Handle *cfg,
394 consensus->num_peers = num_peers; 395 consensus->num_peers = num_peers;
395 consensus->session_id = *session_id; 396 consensus->session_id = *session_id;
396 397
397
398
399 if (0 == num_peers) 398 if (0 == num_peers)
400 { 399 {
401 consensus->peers = NULL; 400 consensus->peers = NULL;
402 } 401 }
403 else if (num_peers > 0) 402 else if (num_peers > 0)
404 { 403 {
405
406 consensus->peers = GNUNET_memdup (peers, num_peers * sizeof (struct GNUNET_PeerIdentity)); 404 consensus->peers = GNUNET_memdup (peers, num_peers * sizeof (struct GNUNET_PeerIdentity));
407 } 405 }
408 else 406 else
@@ -410,7 +408,6 @@ GNUNET_CONSENSUS_create (const struct GNUNET_CONFIGURATION_Handle *cfg,
410 GNUNET_break (0); 408 GNUNET_break (0);
411 } 409 }
412 410
413
414 consensus->client = GNUNET_CLIENT_connect ("consensus", cfg); 411 consensus->client = GNUNET_CLIENT_connect ("consensus", cfg);
415 412
416 GNUNET_assert (consensus->client != NULL); 413 GNUNET_assert (consensus->client != NULL);
@@ -424,7 +421,6 @@ GNUNET_CONSENSUS_create (const struct GNUNET_CONFIGURATION_Handle *cfg,
424 GNUNET_TIME_UNIT_FOREVER_REL, 421 GNUNET_TIME_UNIT_FOREVER_REL,
425 GNUNET_NO, &transmit_join, consensus); 422 GNUNET_NO, &transmit_join, consensus);
426 423
427
428 GNUNET_assert (consensus->th != NULL); 424 GNUNET_assert (consensus->th != NULL);
429 425
430 return consensus; 426 return consensus;