The CamelDataWrapper can now be provided with input and output streams, so
authorbertrand <bertrand@helixcode.com>
Tue, 25 Jan 2000 04:02:14 +0000 (04:02 +0000)
committerBertrand Guiheneuf <bertrand@src.gnome.org>
Tue, 25 Jan 2000 04:02:14 +0000 (04:02 +0000)
2000-01-24  bertrand  <bertrand@helixcode.com>

* camel/camel-data-wrapper.h:
* camel/camel-data-wrapper.c
(_set_input_stream):
(_get_input_stream):
(_set_output_stream):
(_get_output_stream):
The CamelDataWrapper can now be provided with input and
output streams, so that nothing has to be kept in memory.

* camel/camel-stream.c (camel_stream_class_init):
added the "data_available" signal.

camel/camel-data-wrapper.c
camel/camel-data-wrapper.h
camel/camel-stream.c
camel/camel-stream.h

index 061225b..4b9683b 100644 (file)
@@ -35,6 +35,12 @@ static GtkObjectClass *parent_class=NULL;
 /* Returns the class for a CamelDataWrapper */
 #define CDW_CLASS(so) CAMEL_DATA_WRAPPER_CLASS (GTK_OBJECT(so)->klass)
 
+
+static void _set_input_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
+static CamelStream *_get_input_stream (CamelDataWrapper *data_wrapper);
+static void _set_output_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
+CamelStream *_get_output_stream (CamelDataWrapper *data_wrapper);
+
 static void _construct_from_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
 static void _write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
 static void _set_mime_type (CamelDataWrapper *data_wrapper, gchar *mime_type);
@@ -120,6 +126,47 @@ _finalize (GtkObject *object)
 }
 
 
+
+
+
+
+void 
+_set_input_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
+{
+       g_assert (data_wrapper);
+       data_wrapper->input_stream;
+}
+
+
+CamelStream * 
+_get_input_stream (CamelDataWrapper *data_wrapper)
+{
+       g_assert (data_wrapper);
+       return (data_wrapper->input_stream);
+}
+
+
+void 
+_set_output_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
+{
+       g_assert (data_wrapper);
+       data_wrapper->output_stream;
+}
+
+
+CamelStream * 
+_get_output_stream (CamelDataWrapper *data_wrapper)
+{
+       g_assert (data_wrapper);
+       return (data_wrapper->output_stream);
+}
+
+
+
+
+
+
+
 /**
  * _write_to_stream: write data content in a byte stream
  * @data_wrapper: the data wrapper object
index 90d0cb4..c9f8e8b 100644 (file)
@@ -51,6 +51,9 @@ typedef struct
 {
        GtkObject parent_object;
 
+       CamelStream *input_stream;
+       CamelStream *output_stream;
+
        GMimeContentField *mime_type;
 } CamelDataWrapper;
 
@@ -60,13 +63,20 @@ typedef struct {
        GtkObjectClass parent_class;
        
        /* Virtual methods */   
-       void  (*write_to_stream) (CamelDataWrapper *data_wrapper, CamelStream *stream);
-       void  (*construct_from_stream) (CamelDataWrapper *data_wrapper, CamelStream *stream);
-       void  (*set_mime_type) (CamelDataWrapper *data_wrapper, gchar * mime_type);
-       gchar * (*get_mime_type) (CamelDataWrapper *data_wrapper);
-       GMimeContentField * (*get_mime_type_field) (CamelDataWrapper *data_wrapper);
-       void (*set_mime_type_field) (CamelDataWrapper *data_wrapper, GMimeContentField *mime_type_field);
-       CamelStream * (*get_stream) (CamelDataWrapper *data_wrapper);
+       void                (*set_input_stream)       (CamelDataWrapper *data_wrapper, CamelStream *stream);
+       CamelStream *       (*get_input_stream)       (CamelDataWrapper *data_wrapper);
+       void                (*set_output_stream)      (CamelDataWrapper *data_wrapper, CamelStream *stream);
+       CamelStream *       (*get_output_stream)      (CamelDataWrapper *data_wrapper);
+
+       /* deprecated method */
+       void                (*write_to_stream)        (CamelDataWrapper *data_wrapper, CamelStream *stream);
+       void                (*construct_from_stream)  (CamelDataWrapper *data_wrapper, CamelStream *stream);
+
+       void                (*set_mime_type)          (CamelDataWrapper *data_wrapper, gchar * mime_type);
+       gchar *             (*get_mime_type)          (CamelDataWrapper *data_wrapper);
+       GMimeContentField * (*get_mime_type_field)    (CamelDataWrapper *data_wrapper);
+       void                (*set_mime_type_field)    (CamelDataWrapper *data_wrapper, GMimeContentField *mime_type_field);
+       CamelStream *       (*get_stream)             (CamelDataWrapper *data_wrapper);
 } CamelDataWrapperClass;
 
 
@@ -77,6 +87,8 @@ GtkType camel_data_wrapper_get_type (void);
 
 /* public methods */
 
+
+
 void camel_data_wrapper_write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
 void camel_data_wrapper_construct_from_stream (CamelDataWrapper *data_wrapper, CamelStream *stream);
 void camel_data_wrapper_set_mime_type (CamelDataWrapper *data_wrapper, gchar *mime_type);
index 5128d03..0a18ed1 100644 (file)
 #include <config.h>
 #include "camel-stream.h"
 
+
+enum {
+  DATA_AVAILABLE,
+  LAST_SIGNAL
+};
+
+static guint camel_stream_signals[LAST_SIGNAL] = { 0 };
+
 static GtkObjectClass *parent_class = NULL;
 
 
@@ -49,6 +57,7 @@ default_camel_close (CamelStream *stream)
 static void
 camel_stream_class_init (CamelStreamClass *camel_stream_class)
 {
+       GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (camel_stream_class);
 
        parent_class = gtk_type_class (gtk_object_get_type ());
 
@@ -61,6 +70,18 @@ camel_stream_class_init (CamelStreamClass *camel_stream_class)
        camel_stream_class->close = default_camel_close;
 
        /* virtual method overload */
+       
+       /* signal definition */
+       camel_stream_signals[DATA_AVAILABLE] =
+               gtk_signal_new ("data_available",
+                               GTK_RUN_LAST,
+                               gtk_object_class->type,
+                               GTK_SIGNAL_OFFSET (CamelStreamClass, data_available),
+                               gtk_marshal_NONE__NONE,
+                               GTK_TYPE_NONE, 0);
+       
+       gtk_object_class_add_signals (gtk_object_class, camel_stream_signals, LAST_SIGNAL);
+       
 }
 
 GtkType
index 73b4c31..d032797 100644 (file)
@@ -54,6 +54,9 @@ typedef struct {
        GtkObjectClass parent_class;
        
        /* Virtual methods */   
+       
+       void  (*data_available) (CamelStream *stream); /* default "data_available" signal handler */
+
        gint  (*read)      (CamelStream *stream, gchar *buffer, gint n);
        gint  (*write)     (CamelStream *stream, const gchar *buffer, gint n);
        void  (*flush)     (CamelStream *stream);