static void g_tls_output_stream_gnutls_write_async (GOutputStream *stream, const void *buffer, gsize count, gint io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTlsOutputStreamGnutls *tls_stream = G_TLS_OUTPUT_STREAM_GNUTLS (stream); GSimpleAsyncResult *simple; gssize nwrote; GError *error = NULL; GSource *source; g_return_if_fail (tls_stream->priv->conn != NULL); simple = g_simple_async_result_new (G_OBJECT (stream), callback, user_data, g_tls_output_stream_gnutls_write_async); nwrote = g_tls_connection_gnutls_write (tls_stream->priv->conn, buffer, count, FALSE, cancellable, &error); if (nwrote >= 0 || !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) { if (error) { g_simple_async_result_set_from_error (simple, error); g_error_free (error); } else g_simple_async_result_set_op_res_gssize (simple, nwrote); g_simple_async_result_complete_in_idle (simple); g_object_unref (simple); return; } if (error) g_error_free (error); tls_stream->priv->cancellable = cancellable ? g_object_ref (cancellable) : NULL; tls_stream->priv->buffer = buffer; tls_stream->priv->count = count; source = g_tls_connection_gnutls_create_source (tls_stream->priv->conn, G_IO_OUT, tls_stream->priv->cancellable); g_source_set_callback (source, (GSourceFunc) g_tls_output_stream_gnutls_write_ready, simple, NULL); g_source_attach (source, g_main_context_get_thread_default ()); g_source_unref (source); }
static GSource * g_tls_input_stream_gnutls_pollable_create_source (GPollableInputStream * pollable, GCancellable * cancellable) { KmsGTlsInputStreamGnutls *tls_stream = G_KMS_TLS_INPUT_STREAM_GNUTLS (pollable); g_return_val_if_fail (tls_stream->priv->conn != NULL, NULL); return g_tls_connection_gnutls_create_source (tls_stream->priv->conn, G_IO_IN, cancellable); }
static GSource * g_tls_output_stream_gnutls_pollable_create_source (GPollableOutputStream *pollable, GCancellable *cancellable) { GTlsOutputStreamGnutls *tls_stream = G_TLS_OUTPUT_STREAM_GNUTLS (pollable); g_return_val_if_fail (tls_stream->priv->conn != NULL, NULL); return g_tls_connection_gnutls_create_source (tls_stream->priv->conn, G_IO_OUT, cancellable); }