[evolution-data-server] CamelDataWrapper: Add function to construct it from data
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] CamelDataWrapper: Add function to construct it from data
- Date: Tue, 5 Jul 2022 18:14:27 +0000 (UTC)
commit 893278bd92c8d239f6eb16564f7c5156457d0039
Author: Milan Crha <mcrha redhat com>
Date: Tue Jul 5 20:06:55 2022 +0200
CamelDataWrapper: Add function to construct it from data
Better memory management, no need to duplicate the buffer.
src/camel/camel-data-wrapper.c | 36 ++++++++++++++++++++++++++++++++++++
src/camel/camel-data-wrapper.h | 6 ++++++
src/camel/camel-mime-part.c | 6 +-----
3 files changed, 43 insertions(+), 5 deletions(-)
---
diff --git a/src/camel/camel-data-wrapper.c b/src/camel/camel-data-wrapper.c
index 2d463434a..d1946bc8e 100644
--- a/src/camel/camel-data-wrapper.c
+++ b/src/camel/camel-data-wrapper.c
@@ -1547,6 +1547,42 @@ camel_data_wrapper_construct_from_input_stream_finish (CamelDataWrapper *data_wr
return g_task_propagate_boolean (G_TASK (result), error);
}
+/**
+ * camel_data_wrapper_construct_from_data_sync:
+ * @data_wrapper: a #CamelDataWrapper
+ * @data: (not nullable): data to set
+ * @data_len: length of @data
+ * @cancellable: optional #GCancellable object, or %NULL
+ * @error: return location for a #GError, or %NULL
+ *
+ * Constructs the content of @data_wrapper from @data of length @data_len.
+ *
+ * Returns: %TRUE on success, %FALSE on error
+ *
+ * Since: 3.46
+ **/
+gboolean
+camel_data_wrapper_construct_from_data_sync (CamelDataWrapper *data_wrapper,
+ gconstpointer data,
+ gssize data_len,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInputStream *input_stream;
+ gboolean success;
+
+ g_return_val_if_fail (CAMEL_IS_DATA_WRAPPER (data_wrapper), FALSE);
+ g_return_val_if_fail (data != NULL, FALSE);
+
+ input_stream = g_memory_input_stream_new_from_data (data, data_len, NULL);
+
+ success = camel_data_wrapper_construct_from_input_stream_sync (data_wrapper, input_stream,
cancellable, error);
+
+ g_clear_object (&input_stream);
+
+ return success;
+}
+
/**
* camel_data_wrapper_calculate_size_sync:
* @data_wrapper: a #CamelDataWrapper
diff --git a/src/camel/camel-data-wrapper.h b/src/camel/camel-data-wrapper.h
index 34376d924..c5bcc3051 100644
--- a/src/camel/camel-data-wrapper.h
+++ b/src/camel/camel-data-wrapper.h
@@ -231,6 +231,12 @@ gboolean camel_data_wrapper_construct_from_input_stream_finish
(CamelDataWrapper *data_wrapper,
GAsyncResult *result,
GError **error);
+gboolean camel_data_wrapper_construct_from_data_sync
+ (CamelDataWrapper *data_wrapper,
+ gconstpointer data,
+ gssize data_len,
+ GCancellable *cancellable,
+ GError **error);
gsize camel_data_wrapper_calculate_size_sync
(CamelDataWrapper *data_wrapper,
GCancellable *cancellable,
diff --git a/src/camel/camel-mime-part.c b/src/camel/camel-mime-part.c
index e3865dcc3..aebe1f8c9 100644
--- a/src/camel/camel-mime-part.c
+++ b/src/camel/camel-mime-part.c
@@ -1133,14 +1133,10 @@ camel_mime_part_set_content (CamelMimePart *mime_part,
if (length) {
CamelDataWrapper *dw;
- CamelStream *stream;
dw = camel_data_wrapper_new ();
camel_data_wrapper_set_mime_type (dw, type);
- stream = camel_stream_mem_new_with_buffer (data, length);
- camel_data_wrapper_construct_from_stream_sync (
- dw, stream, NULL, NULL);
- g_object_unref (stream);
+ camel_data_wrapper_construct_from_data_sync (dw, data, length, NULL, NULL);
camel_medium_set_content (medium, dw);
g_object_unref (dw);
} else
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]