--- a/xeme/tests/testinputstream.c Tue Dec 19 00:45:55 2023 -0600
+++ b/xeme/tests/testinputstream.c Sun Dec 31 23:02:19 2023 -0600
@@ -126,14 +126,47 @@
/******************************************************************************
+ * Restart Requested Test + *****************************************************************************/ +test_xeme_input_stream_restart_requested_cb(XemeInputStream *stream, + g_assert_true(XEME_IS_INPUT_STREAM(stream)); + *counter = *counter + 1; +test_xeme_input_stream_restart_requested(void) { + XemeInputStream *stream = NULL; + stream = xeme_input_stream_new(); + g_signal_connect(stream, "restart-requested", + G_CALLBACK(test_xeme_input_stream_restart_requested_cb), + g_assert_cmpuint(counter, ==, 0); + xeme_input_stream_restart_requested(stream); + g_assert_cmpuint(counter, ==, 1); + g_assert_finalize_object(stream); +/****************************************************************************** *****************************************************************************/
main(int argc, char *argv[]) {
g_test_init(&argc, &argv, NULL);
- g_test_add_func("/xeme/input_stream/start",
+ g_test_add_func("/xeme/input-stream/start", test_xeme_input_stream_start);
+ g_test_add_func("/xeme/input-stream/restart-requested", + test_xeme_input_stream_restart_requested); --- a/xeme/xemeinputstream.c Tue Dec 19 00:45:55 2023 -0600
+++ b/xeme/xemeinputstream.c Sun Dec 31 23:02:19 2023 -0600
@@ -23,6 +23,7 @@
static guint signals[N_SIGNALS];
@@ -243,14 +244,36 @@
signals[SIG_CLOSED] = g_signal_new_class_handler(
- G_OBJECT_CLASS_TYPE(klass),
+ G_OBJECT_CLASS_TYPE(klass), + * XemeInputStream::restart-requested: + * Emitted when the remote side has requested that the output stream be + * This is typically requested during feature negotiation which happens + * during the initial connection. + signals[SIG_RESTART_REQUESTED] = g_signal_new_class_handler( + G_OBJECT_CLASS_TYPE(klass), /******************************************************************************
@@ -295,3 +318,10 @@
+xeme_input_stream_restart_requested(XemeInputStream *stream) { + g_return_if_fail(XEME_IS_INPUT_STREAM(stream)); + g_signal_emit(stream, signals[SIG_RESTART_REQUESTED], 0); --- a/xeme/xemeinputstream.h Tue Dec 19 00:45:55 2023 -0600
+++ b/xeme/xemeinputstream.h Sun Dec 31 23:02:19 2023 -0600
@@ -76,6 +76,24 @@
gboolean xeme_input_stream_start(XemeInputStream *stream, GInputStream *input, GError **error);
+ * xeme_input_stream_restart_requested: + * @stream: The instance. + * Emits the [signal@InputStream::restart-requested] signal. + * This should be called when the remote side has requested that the output + * stream should be restarted. This typically happens during feature + * negotiation during the initial connection. + * This signal allows who ever is managing the streams to call + * [method@OutputStream.restart] on the output stream. +void xeme_input_stream_restart_requested(XemeInputStream *stream); #endif /* XEME_INPUT_STREAM_H */