1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ 2 /* 3 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) 4 * 5 * This library is free software: you can redistribute it and/or modify it 6 * under the terms of the GNU Lesser General Public License as published by 7 * the Free Software Foundation. 8 * 9 * This library is distributed in the hope that it will be useful, but 10 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 11 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 12 * for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public License 15 * along with this library. If not, see <http://www.gnu.org/licenses/>. 16 * 17 * Authors: Bertrand Guiheneuf <bertrand@helixcode.com> 18 * Michael Zucchi <notzed@ximian.com> 19 * Jeffrey Stedfast <fejj@ximian.com> 20 */ 21 22 #if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION) 23 #error "Only <camel/camel.h> can be included directly." 24 #endif 25 26 #ifndef CAMEL_DATA_WRAPPER_H 27 #define CAMEL_DATA_WRAPPER_H 28 29 #include <sys/types.h> 30 31 #include <camel/camel-mime-utils.h> 32 #include <camel/camel-stream.h> 33 34 /* Standard GObject macros */ 35 #define CAMEL_TYPE_DATA_WRAPPER \ 36 (camel_data_wrapper_get_type ()) 37 #define CAMEL_DATA_WRAPPER(obj) \ 38 (G_TYPE_CHECK_INSTANCE_CAST \ 39 ((obj), CAMEL_TYPE_DATA_WRAPPER, CamelDataWrapper)) 40 #define CAMEL_DATA_WRAPPER_CLASS(cls) \ 41 (G_TYPE_CHECK_CLASS_CAST \ 42 ((cls), CAMEL_TYPE_DATA_WRAPPER, CamelDataWrapperClass)) 43 #define CAMEL_IS_DATA_WRAPPER(obj) \ 44 (G_TYPE_CHECK_INSTANCE_TYPE \ 45 ((obj), CAMEL_TYPE_DATA_WRAPPER)) 46 #define CAMEL_IS_DATA_WRAPPER_CLASS(cls) \ 47 (G_TYPE_CHECK_CLASS_TYPE \ 48 ((cls), CAMEL_TYPE_DATA_WRAPPER)) 49 #define CAMEL_DATA_WRAPPER_GET_CLASS(obj) \ 50 (G_TYPE_INSTANCE_GET_CLASS \ 51 ((obj), CAMEL_TYPE_DATA_WRAPPER, CamelDataWrapperClass)) 52 53 G_BEGIN_DECLS 54 55 typedef struct _CamelDataWrapper CamelDataWrapper; 56 typedef struct _CamelDataWrapperClass CamelDataWrapperClass; 57 typedef struct _CamelDataWrapperPrivate CamelDataWrapperPrivate; 58 59 struct _CamelDataWrapper { 60 GObject parent; 61 CamelDataWrapperPrivate *priv; 62 }; 63 64 struct _CamelDataWrapperClass { 65 GObjectClass parent_class; 66 67 /* Non-Blocking Methods */ 68 void (*set_mime_type) (CamelDataWrapper *data_wrapper, 69 const gchar *mime_type); 70 gchar * (*get_mime_type) (CamelDataWrapper *data_wrapper); 71 CamelContentType * 72 (*get_mime_type_field) (CamelDataWrapper *data_wrapper); 73 void (*set_mime_type_field) (CamelDataWrapper *data_wrapper, 74 CamelContentType *mime_type); 75 gboolean (*is_offline) (CamelDataWrapper *data_wrapper); 76 77 /* Synchronous I/O Methods */ 78 gssize (*write_to_stream_sync) (CamelDataWrapper *data_wrapper, 79 CamelStream *stream, 80 GCancellable *cancellable, 81 GError **error); 82 gssize (*decode_to_stream_sync)(CamelDataWrapper *data_wrapper, 83 CamelStream *stream, 84 GCancellable *cancellable, 85 GError **error); 86 gboolean (*construct_from_stream_sync) 87 (CamelDataWrapper *data_wrapper, 88 CamelStream *stream, 89 GCancellable *cancellable, 90 GError **error); 91 gssize (*write_to_output_stream_sync) 92 (CamelDataWrapper *data_wrapper, 93 GOutputStream *output_stream, 94 GCancellable *cancellable, 95 GError **error); 96 gssize (*decode_to_output_stream_sync) 97 (CamelDataWrapper *data_wrapper, 98 GOutputStream *output_stream, 99 GCancellable *cancellable, 100 GError **error); 101 gboolean (*construct_from_input_stream_sync) 102 (CamelDataWrapper *data_wrapper, 103 GInputStream *input_stream, 104 GCancellable *cancellable, 105 GError **error); 106 107 /* Padding for future expansion */ 108 gpointer reserved[20]; 109 }; 110 111 GType camel_data_wrapper_get_type (void); 112 CamelDataWrapper * 113 camel_data_wrapper_new (void); 114 GByteArray * camel_data_wrapper_get_byte_array 115 (CamelDataWrapper *data_wrapper); 116 CamelTransferEncoding 117 camel_data_wrapper_get_encoding (CamelDataWrapper *data_wrapper); 118 void camel_data_wrapper_set_encoding (CamelDataWrapper *data_wrapper, 119 CamelTransferEncoding encoding); 120 void camel_data_wrapper_set_mime_type 121 (CamelDataWrapper *data_wrapper, 122 const gchar *mime_type); 123 gchar * camel_data_wrapper_get_mime_type 124 (CamelDataWrapper *data_wrapper); 125 CamelContentType * 126 camel_data_wrapper_get_mime_type_field 127 (CamelDataWrapper *data_wrapper); 128 void camel_data_wrapper_set_mime_type_field 129 (CamelDataWrapper *data_wrapper, 130 CamelContentType *mime_type); 131 void camel_data_wrapper_take_mime_type_field 132 (CamelDataWrapper *data_wrapper, 133 CamelContentType *mime_type); 134 gboolean camel_data_wrapper_is_offline (CamelDataWrapper *data_wrapper); 135 void camel_data_wrapper_set_offline (CamelDataWrapper *data_wrapper, 136 gboolean offline); 137 138 gssize camel_data_wrapper_write_to_stream_sync 139 (CamelDataWrapper *data_wrapper, 140 CamelStream *stream, 141 GCancellable *cancellable, 142 GError **error); 143 void camel_data_wrapper_write_to_stream 144 (CamelDataWrapper *data_wrapper, 145 CamelStream *stream, 146 gint io_priority, 147 GCancellable *cancellable, 148 GAsyncReadyCallback callback, 149 gpointer user_data); 150 gssize camel_data_wrapper_write_to_stream_finish 151 (CamelDataWrapper *data_wrapper, 152 GAsyncResult *result, 153 GError **error); 154 gssize camel_data_wrapper_decode_to_stream_sync 155 (CamelDataWrapper *data_wrapper, 156 CamelStream *stream, 157 GCancellable *cancellable, 158 GError **error); 159 void camel_data_wrapper_decode_to_stream 160 (CamelDataWrapper *data_wrapper, 161 CamelStream *stream, 162 gint io_priority, 163 GCancellable *cancellable, 164 GAsyncReadyCallback callback, 165 gpointer user_data); 166 gssize camel_data_wrapper_decode_to_stream_finish 167 (CamelDataWrapper *data_wrapper, 168 GAsyncResult *result, 169 GError **error); 170 gboolean camel_data_wrapper_construct_from_stream_sync 171 (CamelDataWrapper *data_wrapper, 172 CamelStream *stream, 173 GCancellable *cancellable, 174 GError **error); 175 void camel_data_wrapper_construct_from_stream 176 (CamelDataWrapper *data_wrapper, 177 CamelStream *stream, 178 gint io_priority, 179 GCancellable *cancellable, 180 GAsyncReadyCallback callback, 181 gpointer user_data); 182 gboolean camel_data_wrapper_construct_from_stream_finish 183 (CamelDataWrapper *data_wrapper, 184 GAsyncResult *result, 185 GError **error); 186 gssize camel_data_wrapper_write_to_output_stream_sync 187 (CamelDataWrapper *data_wrapper, 188 GOutputStream *output_stream, 189 GCancellable *cancellable, 190 GError **error); 191 void camel_data_wrapper_write_to_output_stream 192 (CamelDataWrapper *data_wrapper, 193 GOutputStream *output_stream, 194 gint io_priority, 195 GCancellable *cancellable, 196 GAsyncReadyCallback callback, 197 gpointer user_data); 198 gssize camel_data_wrapper_write_to_output_stream_finish 199 (CamelDataWrapper *data_wrapper, 200 GAsyncResult *result, 201 GError **error); 202 gssize camel_data_wrapper_decode_to_output_stream_sync 203 (CamelDataWrapper *data_wrapper, 204 GOutputStream *output_stream, 205 GCancellable *cancellable, 206 GError **error); 207 void camel_data_wrapper_decode_to_output_stream 208 (CamelDataWrapper *data_wrapper, 209 GOutputStream *output_stream, 210 gint io_priority, 211 GCancellable *cancellable, 212 GAsyncReadyCallback callback, 213 gpointer user_data); 214 gssize camel_data_wrapper_decode_to_output_stream_finish 215 (CamelDataWrapper *data_wrapper, 216 GAsyncResult *result, 217 GError **error); 218 gboolean camel_data_wrapper_construct_from_input_stream_sync 219 (CamelDataWrapper *data_wrapper, 220 GInputStream *input_stream, 221 GCancellable *cancellable, 222 GError **error); 223 void camel_data_wrapper_construct_from_input_stream 224 (CamelDataWrapper *data_wrapper, 225 GInputStream *input_stream, 226 gint io_priority, 227 GCancellable *cancellable, 228 GAsyncReadyCallback callback, 229 gpointer user_data); 230 gboolean camel_data_wrapper_construct_from_input_stream_finish 231 (CamelDataWrapper *data_wrapper, 232 GAsyncResult *result, 233 GError **error); 234 gsize camel_data_wrapper_calculate_size_sync 235 (CamelDataWrapper *data_wrapper, 236 GCancellable *cancellable, 237 GError **error); 238 gsize camel_data_wrapper_calculate_decoded_size_sync 239 (CamelDataWrapper *data_wrapper, 240 GCancellable *cancellable, 241 GError **error); 242 243 G_END_DECLS 244 245 #endif /* CAMEL_DATA_WRAPPER_H */ 246