static void on_istream_read_complete (GObject *src, GAsyncResult *res, gpointer user_data) { HotSshTab *self = user_data; HotSshTabPrivate *priv = hotssh_tab_get_instance_private (self); gs_unref_bytes GBytes *result = NULL; GError *local_error = NULL; const guint8 *buf; gsize len; result = g_input_stream_read_bytes_finish ((GInputStream*)src, res, &local_error); if (!result) goto out; buf = g_bytes_get_data (result, &len); g_debug ("read %u bytes", (guint)len); vte_terminal_feed ((VteTerminal*)priv->terminal, (char*)buf, len); g_input_stream_read_bytes_async ((GInputStream*)src, 8192, G_PRIORITY_DEFAULT, priv->cancellable, on_istream_read_complete, self); out: if (local_error) page_transition_take_error (self, local_error); }
static void selection_buffer_read_cb (GObject *object, GAsyncResult *result, gpointer user_data) { SelectionBuffer *buffer = user_data; gboolean finished = TRUE; GError *error = NULL; GBytes *bytes; bytes = g_input_stream_read_bytes_finish (buffer->stream, result, &error); if (bytes) { finished = g_bytes_get_size (bytes) == 0; selection_buffer_append_data (buffer, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes)); g_bytes_unref (bytes); } if (!finished) selection_buffer_read (buffer); else { if (error) { g_warning (G_STRLOC ": error reading selection buffer: %s", error->message); g_error_free (error); } else selection_buffer_notify (buffer); g_input_stream_close (buffer->stream, NULL, NULL); g_clear_object (&buffer->stream); g_clear_object (&buffer->cancellable); } selection_buffer_unref (buffer); }
static void gum_duk_debug_session_on_read_ready (GObject * source_object, GAsyncResult * res, GumDukDebugSession * self) { GBytes * bytes; bytes = g_input_stream_read_bytes_finish (self->input, res, NULL); if (bytes == NULL || g_bytes_get_size (bytes) == 0) goto error_gone; gum_duk_debug_channel_post (self->channel, bytes); g_bytes_unref (bytes); gum_duk_debug_session_read_next_chunk (self); return; error_gone: if (self->cancellable != NULL) gum_duk_debug_channel_remove_session (self->channel, self); }