aboutsummaryrefslogtreecommitdiff
path: root/src/transport/transport-testing.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/transport-testing.h')
-rw-r--r--src/transport/transport-testing.h87
1 files changed, 76 insertions, 11 deletions
diff --git a/src/transport/transport-testing.h b/src/transport/transport-testing.h
index 75a568cf7..2aaff26b0 100644
--- a/src/transport/transport-testing.h
+++ b/src/transport/transport-testing.h
@@ -31,15 +31,45 @@
31#include "gnunet_hello_lib.h" 31#include "gnunet_hello_lib.h"
32#include "gnunet_os_lib.h" 32#include "gnunet_os_lib.h"
33#include "gnunet_program_lib.h" 33#include "gnunet_program_lib.h"
34#include "gnunet_container_lib.h"
34#include "gnunet_transport_service.h" 35#include "gnunet_transport_service.h"
35 36
36#define GNUNET_TRANSPORT_TESTING_ConnectRequest void * 37#define GNUNET_TRANSPORT_TESTING_ConnectRequest void *
37 38
39
40/**
41 * Context for a single peer
42 */
43struct PeerContext;
44
45/**
46 * Callback when two peers are connected and both have called the connect callback
47 * to notify clients about a new peer
48 */
49typedef void (*GNUNET_TRANSPORT_TESTING_start_cb) (struct PeerContext * p,
50 void *cls);
51
52/**
53 * Callback when two peers are connected and both have called the connect callback
54 * to notify clients about a new peer
55 */
56typedef void (*GNUNET_TRANSPORT_TESTING_connect_cb) (struct PeerContext * p1,
57 struct PeerContext * p2,
58 void *cls);
59
60
61struct TransportTestingHandle;
62
38/** 63/**
39 * Context for a single peer 64 * Context for a single peer
40 */ 65 */
41struct PeerContext 66struct PeerContext
42{ 67{
68 struct PeerContext * next;
69 struct PeerContext * prev;
70
71 struct TransportTestingHandle * tth;
72
43 struct GNUNET_CONFIGURATION_Handle *cfg; 73 struct GNUNET_CONFIGURATION_Handle *cfg;
44 74
45 struct GNUNET_TRANSPORT_Handle *th; 75 struct GNUNET_TRANSPORT_Handle *th;
@@ -56,6 +86,10 @@ struct PeerContext
56 86
57 GNUNET_TRANSPORT_NotifyDisconnect nd; 87 GNUNET_TRANSPORT_NotifyDisconnect nd;
58 88
89 GNUNET_TRANSPORT_TESTING_start_cb start_cb;
90
91 struct GNUNET_HELLO_Message *hello;
92
59 void *cb_cls; 93 void *cb_cls;
60 94
61 char *servicehome; 95 char *servicehome;
@@ -63,13 +97,31 @@ struct PeerContext
63 unsigned int no; 97 unsigned int no;
64}; 98};
65 99
66/** 100
67 * Callback when two peers are connected and both have called the connect callback 101struct ConnectingContext
68 * to notify clients about a new peer 102{
69 */ 103 struct ConnectingContext * next;
70typedef void (*GNUNET_TRANSPORT_TESTING_connect_cb) (struct PeerContext * p1, 104 struct ConnectingContext * prev;
71 struct PeerContext * p2, 105 struct PeerContext *p1;
72 void *cls); 106 struct PeerContext *p2;
107 GNUNET_SCHEDULER_TaskIdentifier tct;
108 GNUNET_TRANSPORT_TESTING_connect_cb cb;
109 void *cb_cls;
110 struct GNUNET_TRANSPORT_Handle *th_p1;
111 struct GNUNET_TRANSPORT_Handle *th_p2;
112 int p1_c;
113 int p2_c;
114};
115
116struct TransportTestingHandle
117{
118 struct ConnectingContext * cc_head;
119 struct ConnectingContext * cc_tail;
120
121 struct PeerContext * p_head;
122 struct PeerContext * p_tail;
123};
124
73 125
74 126
75/** 127/**
@@ -82,10 +134,13 @@ typedef void (*GNUNET_TRANSPORT_TESTING_connect_cb) (struct PeerContext * p1,
82 * @return the peer context 134 * @return the peer context
83 */ 135 */
84struct PeerContext * 136struct PeerContext *
85GNUNET_TRANSPORT_TESTING_start_peer (const char *cfgname, 137GNUNET_TRANSPORT_TESTING_start_peer (struct TransportTestingHandle * tth,
138 const char *cfgname,
139 int peer_id,
86 GNUNET_TRANSPORT_ReceiveCallback rec, 140 GNUNET_TRANSPORT_ReceiveCallback rec,
87 GNUNET_TRANSPORT_NotifyConnect nc, 141 GNUNET_TRANSPORT_NotifyConnect nc,
88 GNUNET_TRANSPORT_NotifyDisconnect nd, 142 GNUNET_TRANSPORT_NotifyDisconnect nd,
143 GNUNET_TRANSPORT_TESTING_start_cb start_cb,
89 void *cb_cls); 144 void *cb_cls);
90 145
91 146
@@ -95,7 +150,8 @@ GNUNET_TRANSPORT_TESTING_start_peer (const char *cfgname,
95 */ 150 */
96 151
97void 152void
98GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext *pc); 153GNUNET_TRANSPORT_TESTING_stop_peer (struct TransportTestingHandle * tth,
154 struct PeerContext *pc);
99 155
100 156
101/** 157/**
@@ -109,7 +165,8 @@ GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext *pc);
109 * @return a connect request handle 165 * @return a connect request handle
110 */ 166 */
111GNUNET_TRANSPORT_TESTING_ConnectRequest 167GNUNET_TRANSPORT_TESTING_ConnectRequest
112GNUNET_TRANSPORT_TESTING_connect_peers (struct PeerContext *p1, 168GNUNET_TRANSPORT_TESTING_connect_peers (struct TransportTestingHandle * tth,
169 struct PeerContext *p1,
113 struct PeerContext *p2, 170 struct PeerContext *p2,
114 GNUNET_TRANSPORT_TESTING_connect_cb cb, 171 GNUNET_TRANSPORT_TESTING_connect_cb cb,
115 void *cls); 172 void *cls);
@@ -120,7 +177,15 @@ GNUNET_TRANSPORT_TESTING_connect_peers (struct PeerContext *p1,
120 * @param cc a connect request handle 177 * @param cc a connect request handle
121 */ 178 */
122void 179void
123GNUNET_TRANSPORT_TESTING_connect_peers_cancel (void *cc); 180GNUNET_TRANSPORT_TESTING_connect_peers_cancel (struct TransportTestingHandle *,
181 void *cc);
182
183
184void
185GNUNET_TRANSPORT_TESTING_done (struct TransportTestingHandle * tth);
186
187struct TransportTestingHandle *
188GNUNET_TRANSPORT_TESTING_init ();
124 189
125/* 190/*
126 * Some utility functions 191 * Some utility functions