equal
deleted
inserted
replaced
223 |
223 |
224 sock_stream_invoke_callbacks(SOCK_TEST_BASE(sock), mask); |
224 sock_stream_invoke_callbacks(SOCK_TEST_BASE(sock), mask); |
225 } |
225 } |
226 } |
226 } |
227 |
227 |
|
228 void sock_test_add_recv_str (struct sock_test *sock, const char *str) |
|
229 { |
|
230 struct io_vec vec = { |
|
231 (char*) str, strlen(str) |
|
232 }; |
|
233 |
|
234 sock_test_add_recv_vec(sock, vec); |
|
235 } |
|
236 |
228 void sock_test_get_send_data (struct sock_test *sock, char **buf_ptr, size_t *len_ptr) |
237 void sock_test_get_send_data (struct sock_test *sock, char **buf_ptr, size_t *len_ptr) |
229 { |
238 { |
230 struct io_buf *buf = &sock->send_buf; |
239 struct io_buf *buf = &sock->send_buf; |
231 size_t len = 0, i, off = 0; |
240 size_t len = 0, i, off = 0; |
232 char *out; |
241 char *out; |
239 // alloc |
248 // alloc |
240 assert((out = malloc(len))); |
249 assert((out = malloc(len))); |
241 |
250 |
242 // copy |
251 // copy |
243 for (i = 0; i < buf->count; i++) { |
252 for (i = 0; i < buf->count; i++) { |
244 memcpy(out + off, buf->vecs[i].buf, buf->vecs[i].len); |
253 struct io_vec *vec = buf->vecs + i; |
245 off += buf->vecs[i].len; |
254 |
|
255 memcpy(out + off, vec->buf, vec->len); |
|
256 off += vec->len; |
|
257 |
|
258 // zero |
|
259 free(vec->buf); vec->buf = NULL; |
|
260 vec->len = 0; |
246 } |
261 } |
247 |
262 |
248 // update return |
263 // update return |
249 *buf_ptr = out; |
264 *buf_ptr = out; |
250 *len_ptr = len; |
265 *len_ptr = len; |
251 } |
266 |
252 |
267 // update write_vec |
|
268 buf->write_vec = buf->vecs; |
|
269 } |
|
270 |