aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/testbed_api_barriers.c
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2013-09-02 14:25:54 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2013-09-02 14:25:54 +0000
commit6ea7ba4bfcd11cbfc0b828f12d881f983d277bc7 (patch)
tree1de1beff9a9c31428c01e2cb896a0e82fe1bd274 /src/testbed/testbed_api_barriers.c
parentc9b0b7850190a2deec71bc8029a8db58ad809fd5 (diff)
downloadgnunet-6ea7ba4bfcd11cbfc0b828f12d881f983d277bc7.tar.gz
gnunet-6ea7ba4bfcd11cbfc0b828f12d881f983d277bc7.zip
- more barrier code
Diffstat (limited to 'src/testbed/testbed_api_barriers.c')
-rw-r--r--src/testbed/testbed_api_barriers.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/testbed/testbed_api_barriers.c b/src/testbed/testbed_api_barriers.c
index ab468a088..23d34ffe8 100644
--- a/src/testbed/testbed_api_barriers.c
+++ b/src/testbed/testbed_api_barriers.c
@@ -181,9 +181,11 @@ GNUNET_TESTBED_barrier_init (struct GNUNET_TESTBED_Controller *controller,
181 unsigned int quorum, 181 unsigned int quorum,
182 GNUNET_TESTBED_barrier_status_cb cb, void *cls) 182 GNUNET_TESTBED_barrier_status_cb cb, void *cls)
183{ 183{
184 struct GNUNET_TESTBED_BarrierInit *msg;
184 struct GNUNET_TESTBED_Barrier *barrier; 185 struct GNUNET_TESTBED_Barrier *barrier;
185 struct GNUNET_HashCode key; 186 struct GNUNET_HashCode key;
186 size_t name_len; 187 size_t name_len;
188 uint16_t msize;
187 189
188 GNUNET_assert (quorum <= 100); 190 GNUNET_assert (quorum <= 100);
189 GNUNET_assert (NULL != cb); 191 GNUNET_assert (NULL != cb);
@@ -199,6 +201,7 @@ GNUNET_TESTBED_barrier_init (struct GNUNET_TESTBED_Controller *controller,
199 return NULL; 201 return NULL;
200 } 202 }
201 barrier = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_Barrier)); 203 barrier = GNUNET_malloc (sizeof (struct GNUNET_TESTBED_Barrier));
204 barrier->c = controller;
202 barrier->name = GNUNET_strdup (name); 205 barrier->name = GNUNET_strdup (name);
203 barrier->cb = cb; 206 barrier->cb = cb;
204 barrier->cls = cls; 207 barrier->cls = cls;
@@ -207,6 +210,13 @@ GNUNET_TESTBED_barrier_init (struct GNUNET_TESTBED_Controller *controller,
207 GNUNET_CONTAINER_multihashmap_put (barrier_map, &barrier->key, 210 GNUNET_CONTAINER_multihashmap_put (barrier_map, &barrier->key,
208 barrier, 211 barrier,
209 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST)); 212 GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST));
213 msize = name_len + sizeof (struct GNUNET_TESTBED_BarrierInit);
214 msg = GNUNET_malloc (msize);
215 msg->header.size = htons (msize);
216 msg->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_BARRIER_INIT);
217 msg->quorum = (uint8_t) quorum;
218 (void) memcpy (msg->name, barrier->name, name_len);
219 GNUNET_TESTBED_queue_message_ (barrier->c, &msg->header);
210 return barrier; 220 return barrier;
211} 221}
212 222
@@ -219,6 +229,15 @@ GNUNET_TESTBED_barrier_init (struct GNUNET_TESTBED_Controller *controller,
219void 229void
220GNUNET_TESTBED_barrier_cancel (struct GNUNET_TESTBED_Barrier *barrier) 230GNUNET_TESTBED_barrier_cancel (struct GNUNET_TESTBED_Barrier *barrier)
221{ 231{
232 struct GNUNET_TESTBED_BarrierCancel *msg;
233 uint16_t msize;
234
235 msize = sizeof (struct GNUNET_TESTBED_BarrierCancel) + strlen (barrier->name);
236 msg = GNUNET_malloc (msize);
237 msg->header.size = htons (msize);
238 msg->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_BARRIER_CANCEL);
239 (void) memcpy (msg->name, barrier->name, strlen (barrier->name));
240 GNUNET_TESTBED_queue_message_ (barrier->c, &msg->header);
222 barrier_remove (barrier); 241 barrier_remove (barrier);
223} 242}
224 243