Commit aaf66c0b authored by Olivier Crête's avatar Olivier Crête Committed by Olivier Crête

test-send-recv: Write in a loop until blocked

We're not sure that our callback will be called again if
we haven't filled the pipe.
parent 52e0ce58
...@@ -1000,34 +1000,36 @@ write_stream_cb (GObject *pollable_stream, gpointer _user_data) ...@@ -1000,34 +1000,36 @@ write_stream_cb (GObject *pollable_stream, gpointer _user_data)
guint8 *buf = NULL; guint8 *buf = NULL;
gsize buf_len = 0; gsize buf_len = 0;
gssize len; gssize len;
for (;;) {
/* Initialise a receive buffer. */ /* Initialise a receive buffer. */
generate_buffer_to_transmit (data, test_data->transmitted_bytes, &buf, generate_buffer_to_transmit (data, test_data->transmitted_bytes, &buf,
&buf_len); &buf_len);
/* Try to transmit some data. */ /* Try to transmit some data. */
len = g_pollable_output_stream_write_nonblocking ( len = g_pollable_output_stream_write_nonblocking (
G_POLLABLE_OUTPUT_STREAM (pollable_stream), buf, buf_len, NULL, &error); G_POLLABLE_OUTPUT_STREAM (pollable_stream), buf, buf_len, NULL, &error);
if (len == -1) { if (len == -1) {
g_assert_error (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK); g_assert_error (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK);
g_free (buf); g_free (buf);
return G_SOURCE_CONTINUE; return G_SOURCE_CONTINUE;
} }
g_assert_no_error (error); g_assert_no_error (error);
/* Update the test’s buffer generation state machine. */ /* Update the test’s buffer generation state machine. */
notify_transmitted_buffer (data, test_data->transmitted_bytes, &buf, buf_len, notify_transmitted_buffer (data, test_data->transmitted_bytes, &buf, buf_len,
len); len);
/* Termination time? */ /* Termination time? */
if (test_data->transmitted_bytes == test_data->n_bytes) { if (test_data->transmitted_bytes == test_data->n_bytes) {
g_main_loop_quit (gsource_data->main_loop); g_main_loop_quit (gsource_data->main_loop);
return G_SOURCE_REMOVE; break;
}
} }
return G_SOURCE_CONTINUE; return G_SOURCE_REMOVE;
} }
static void static void
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment