diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2013-09-02 14:25:54 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2013-09-02 14:25:54 +0000 |
commit | 6ea7ba4bfcd11cbfc0b828f12d881f983d277bc7 (patch) | |
tree | 1de1beff9a9c31428c01e2cb896a0e82fe1bd274 /src/testbed/testbed_api_barriers.c | |
parent | c9b0b7850190a2deec71bc8029a8db58ad809fd5 (diff) | |
download | gnunet-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.c | 19 |
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, | |||
219 | void | 229 | void |
220 | GNUNET_TESTBED_barrier_cancel (struct GNUNET_TESTBED_Barrier *barrier) | 230 | GNUNET_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 | ||