aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/testbed/testbed_api.c3
-rw-r--r--src/testbed/testbed_api_peers.c53
-rw-r--r--src/testbed/testbed_api_peers.h35
3 files changed, 91 insertions, 0 deletions
diff --git a/src/testbed/testbed_api.c b/src/testbed/testbed_api.c
index 7011e6506..0c891b447 100644
--- a/src/testbed/testbed_api.c
+++ b/src/testbed/testbed_api.c
@@ -258,6 +258,7 @@ handle_opsuccess (struct GNUNET_TESTBED_Controller *c,
258 struct GNUNET_TESTBED_Peer *peer; 258 struct GNUNET_TESTBED_Peer *peer;
259 259
260 peer = opc->data; 260 peer = opc->data;
261 GNUNET_TESTBED_peer_deregister_ (peer);
261 GNUNET_free (peer); 262 GNUNET_free (peer);
262 opc->data = NULL; 263 opc->data = NULL;
263 //PEERDESTROYDATA 264 //PEERDESTROYDATA
@@ -270,6 +271,7 @@ handle_opsuccess (struct GNUNET_TESTBED_Controller *c,
270 data = opc->data; 271 data = opc->data;
271 GNUNET_free (data); /* FIXME: Decide whether we call data->op_cb */ 272 GNUNET_free (data); /* FIXME: Decide whether we call data->op_cb */
272 opc->data = NULL; 273 opc->data = NULL;
274 GNUNET_TESTBED_cleanup_peers_ ();
273 } 275 }
274 break; 276 break;
275 default: 277 default:
@@ -330,6 +332,7 @@ handle_peer_create_success (struct GNUNET_TESTBED_Controller *c,
330 peer = data->peer; 332 peer = data->peer;
331 GNUNET_assert (peer->unique_id == ntohl (msg->peer_id)); 333 GNUNET_assert (peer->unique_id == ntohl (msg->peer_id));
332 peer->state = PS_CREATED; 334 peer->state = PS_CREATED;
335 GNUNET_TESTBED_peer_register_ (peer);
333 cb = data->cb; 336 cb = data->cb;
334 cls = data->cls; 337 cls = data->cls;
335 GNUNET_free (opc->data); 338 GNUNET_free (opc->data);
diff --git a/src/testbed/testbed_api_peers.c b/src/testbed/testbed_api_peers.c
index 39e4b596a..9ad8366f2 100644
--- a/src/testbed/testbed_api_peers.c
+++ b/src/testbed/testbed_api_peers.c
@@ -33,6 +33,59 @@
33#include "testbed_api_hosts.h" 33#include "testbed_api_hosts.h"
34#include "testbed_api_operations.h" 34#include "testbed_api_operations.h"
35 35
36
37/**
38 * Peer list DLL head
39 */
40static struct GNUNET_TESTBED_Peer *peer_list_head;
41
42/**
43 * Peer list DLL tail
44 */
45static struct GNUNET_TESTBED_Peer *peer_list_tail;
46
47
48/**
49 * Adds a peer to the peer list
50 *
51 * @param peer the peer to add to the peer list
52 */
53void
54GNUNET_TESTBED_peer_register_ (struct GNUNET_TESTBED_Peer *peer)
55{
56 GNUNET_CONTAINER_DLL_insert_tail (peer_list_head, peer_list_tail, peer);
57}
58
59
60/**
61 * Removes a peer from the peer list
62 *
63 * @param peer the peer to remove
64 */
65void
66GNUNET_TESTBED_peer_deregister_ (struct GNUNET_TESTBED_Peer *peer)
67{
68 GNUNET_CONTAINER_DLL_remove (peer_list_head, peer_list_tail, peer);
69}
70
71
72/**
73 * Frees all peers
74 */
75void
76GNUNET_TESTBED_cleanup_peers_ (void)
77{
78 struct GNUNET_TESTBED_Peer *peer;
79
80 while (NULL != (peer = peer_list_head))
81 {
82 GNUNET_TESTBED_peer_deregister_ (peer);
83 GNUNET_free (peer);
84 }
85}
86
87
88
36/** 89/**
37 * Function to call to start a peer_create type operation once all 90 * Function to call to start a peer_create type operation once all
38 * queues the operation is part of declare that the 91 * queues the operation is part of declare that the
diff --git a/src/testbed/testbed_api_peers.h b/src/testbed/testbed_api_peers.h
index 8598cc177..49f875607 100644
--- a/src/testbed/testbed_api_peers.h
+++ b/src/testbed/testbed_api_peers.h
@@ -66,6 +66,16 @@ enum PeerState
66struct GNUNET_TESTBED_Peer 66struct GNUNET_TESTBED_Peer
67{ 67{
68 /** 68 /**
69 * peer list DLL
70 */
71 struct GNUNET_TESTBED_Peer *next;
72
73 /**
74 * peer list DLL
75 */
76 struct GNUNET_TESTBED_Peer *prev;
77
78 /**
69 * Our controller context (not necessarily the controller 79 * Our controller context (not necessarily the controller
70 * that is responsible for starting/running the peer!). 80 * that is responsible for starting/running the peer!).
71 */ 81 */
@@ -248,5 +258,30 @@ struct GNUNET_TESTBED_PeerGetConfigurationMessage *
248GNUNET_TESTBED_generate_peergetconfig_msg_ (uint32_t peer_id, 258GNUNET_TESTBED_generate_peergetconfig_msg_ (uint32_t peer_id,
249 uint64_t operation_id); 259 uint64_t operation_id);
250 260
261
262/**
263 * Adds a peer to the peer list
264 *
265 * @param peer the peer to add to the peer list
266 */
267void
268GNUNET_TESTBED_peer_register_ (struct GNUNET_TESTBED_Peer *peer);
269
270
271/**
272 * Removes a peer from the peer list
273 *
274 * @param peer the peer to remove
275 */
276void
277GNUNET_TESTBED_peer_deregister_ (struct GNUNET_TESTBED_Peer *peer);
278
279
280/**
281 * Frees all peers
282 */
283void
284GNUNET_TESTBED_cleanup_peers_ (void);
285
251#endif 286#endif
252/* end of testbed_api_peers.h */ 287/* end of testbed_api_peers.h */