diff options
Diffstat (limited to 'src/transport/transport-testing.h')
-rw-r--r-- | src/transport/transport-testing.h | 87 |
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 | */ | ||
43 | struct 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 | */ | ||
49 | typedef 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 | */ | ||
56 | typedef void (*GNUNET_TRANSPORT_TESTING_connect_cb) (struct PeerContext * p1, | ||
57 | struct PeerContext * p2, | ||
58 | void *cls); | ||
59 | |||
60 | |||
61 | struct TransportTestingHandle; | ||
62 | |||
38 | /** | 63 | /** |
39 | * Context for a single peer | 64 | * Context for a single peer |
40 | */ | 65 | */ |
41 | struct PeerContext | 66 | struct 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 | 101 | struct ConnectingContext |
68 | * to notify clients about a new peer | 102 | { |
69 | */ | 103 | struct ConnectingContext * next; |
70 | typedef 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 | |||
116 | struct 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 | */ |
84 | struct PeerContext * | 136 | struct PeerContext * |
85 | GNUNET_TRANSPORT_TESTING_start_peer (const char *cfgname, | 137 | GNUNET_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 | ||
97 | void | 152 | void |
98 | GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext *pc); | 153 | GNUNET_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 | */ |
111 | GNUNET_TRANSPORT_TESTING_ConnectRequest | 167 | GNUNET_TRANSPORT_TESTING_ConnectRequest |
112 | GNUNET_TRANSPORT_TESTING_connect_peers (struct PeerContext *p1, | 168 | GNUNET_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 | */ |
122 | void | 179 | void |
123 | GNUNET_TRANSPORT_TESTING_connect_peers_cancel (void *cc); | 180 | GNUNET_TRANSPORT_TESTING_connect_peers_cancel (struct TransportTestingHandle *, |
181 | void *cc); | ||
182 | |||
183 | |||
184 | void | ||
185 | GNUNET_TRANSPORT_TESTING_done (struct TransportTestingHandle * tth); | ||
186 | |||
187 | struct TransportTestingHandle * | ||
188 | GNUNET_TRANSPORT_TESTING_init (); | ||
124 | 189 | ||
125 | /* | 190 | /* |
126 | * Some utility functions | 191 | * Some utility functions |