aboutsummaryrefslogtreecommitdiff
path: root/src/transport/transport-testing-send.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/transport-testing-send.c')
-rw-r--r--src/transport/transport-testing-send.c98
1 files changed, 20 insertions, 78 deletions
diff --git a/src/transport/transport-testing-send.c b/src/transport/transport-testing-send.c
index 92d5833b0..24858353e 100644
--- a/src/transport/transport-testing-send.c
+++ b/src/transport/transport-testing-send.c
@@ -30,63 +30,6 @@
30#define TIMEOUT_TRANSMIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30) 30#define TIMEOUT_TRANSMIT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
31 31
32 32
33static size_t
34notify_ready (void *cls,
35 size_t size,
36 void *buf)
37{
38 struct TRANSPORT_TESTING_SendJob *sj = cls;
39 struct GNUNET_TRANSPORT_TESTING_PeerContext *sender = sj->sender;
40 struct GNUNET_TRANSPORT_TESTING_PeerContext *receiver = sj->receiver;
41 struct GNUNET_TRANSPORT_TESTING_Handle *tth = sender->tth;
42 uint16_t msize = sj->msize;
43 struct GNUNET_TRANSPORT_TESTING_TestMessage *test;
44
45 sj->th = NULL;
46 GNUNET_CONTAINER_DLL_remove (tth->sj_head,
47 tth->sj_tail,
48 sj);
49 if (NULL == buf)
50 {
51 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
52 "Timeout occurred while waiting for transmit_ready\n");
53 GNUNET_SCHEDULER_shutdown ();
54 GNUNET_free (sj);
55 return 0;
56 }
57
58 GNUNET_assert (size >= msize);
59 if (NULL != buf)
60 {
61 memset (buf, sj->num, msize);
62 test = buf;
63 test->header.size = htons (msize);
64 test->header.type = htons (sj->mtype);
65 test->num = htonl (sj->num);
66 }
67
68 {
69 char *ps = GNUNET_strdup (GNUNET_i2s (&sender->id));
70
71 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
72 "Sending message %u from %u (%s) with type %u and size %u bytes to peer %u (%s)\n",
73 (unsigned int) sj->num,
74 sender->no,
75 ps,
76 sj->mtype,
77 msize,
78 receiver->no,
79 GNUNET_i2s (&receiver->id));
80 GNUNET_free (ps);
81 }
82 if (NULL != sj->cont)
83 GNUNET_SCHEDULER_add_now (sj->cont,
84 sj->cont_cls);
85 GNUNET_free (sj);
86 return msize;
87}
88
89
90/** 33/**
91 * Return @a cx in @a cls. 34 * Return @a cx in @a cls.
92 */ 35 */
@@ -127,10 +70,10 @@ GNUNET_TRANSPORT_TESTING_send (struct GNUNET_TRANSPORT_TESTING_PeerContext *send
127 GNUNET_SCHEDULER_TaskCallback cont, 70 GNUNET_SCHEDULER_TaskCallback cont,
128 void *cont_cls) 71 void *cont_cls)
129{ 72{
130 struct GNUNET_TRANSPORT_TESTING_Handle *tth = sender->tth;
131 struct TRANSPORT_TESTING_SendJob *sj;
132 struct GNUNET_TRANSPORT_TESTING_ConnectRequest *cr; 73 struct GNUNET_TRANSPORT_TESTING_ConnectRequest *cr;
133 74 struct GNUNET_MQ_Envelope *env;
75 struct GNUNET_TRANSPORT_TESTING_TestMessage *test;
76
134 if (msize < sizeof (struct GNUNET_TRANSPORT_TESTING_TestMessage)) 77 if (msize < sizeof (struct GNUNET_TRANSPORT_TESTING_TestMessage))
135 { 78 {
136 GNUNET_break (0); 79 GNUNET_break (0);
@@ -151,17 +94,11 @@ GNUNET_TRANSPORT_TESTING_send (struct GNUNET_TRANSPORT_TESTING_PeerContext *send
151 GNUNET_break (0); 94 GNUNET_break (0);
152 return GNUNET_NO; 95 return GNUNET_NO;
153 } 96 }
154 sj = GNUNET_new (struct TRANSPORT_TESTING_SendJob); 97 if (NULL == cr->mq)
155 sj->num = num; 98 {
156 sj->sender = sender; 99 GNUNET_break (0);
157 sj->receiver = receiver; 100 return GNUNET_NO;
158 sj->cont = cont; 101 }
159 sj->cont_cls = cont_cls;
160 sj->mtype = mtype;
161 sj->msize = msize;
162 GNUNET_CONTAINER_DLL_insert (tth->sj_head,
163 tth->sj_tail,
164 sj);
165 { 102 {
166 char *receiver_s = GNUNET_strdup (GNUNET_i2s (&receiver->id)); 103 char *receiver_s = GNUNET_strdup (GNUNET_i2s (&receiver->id));
167 104
@@ -173,13 +110,18 @@ GNUNET_TRANSPORT_TESTING_send (struct GNUNET_TRANSPORT_TESTING_PeerContext *send
173 receiver_s); 110 receiver_s);
174 GNUNET_free (receiver_s); 111 GNUNET_free (receiver_s);
175 } 112 }
176 sj->th = GNUNET_TRANSPORT_notify_transmit_ready (sender->th, 113 env = GNUNET_MQ_msg_extra (test,
177 &receiver->id, 114 msize - sizeof (*test),
178 msize, 115 mtype);
179 TIMEOUT_TRANSMIT, 116 test->num = htonl (num);
180 &notify_ready, 117 memset (&test[1],
181 sj); 118 num,
182 GNUNET_assert (NULL != sj->th); 119 msize - sizeof (*test));
120 GNUNET_MQ_notify_sent (env,
121 cont,
122 cont_cls);
123 GNUNET_MQ_send (cr->mq,
124 env);
183 return GNUNET_OK; 125 return GNUNET_OK;
184} 126}
185 127