Implemented. (digest_getv): Implemented.
authorJeffrey Stedfast <fejj@ximian.com>
Wed, 8 May 2002 21:58:37 +0000 (21:58 +0000)
committerJeffrey Stedfast <fejj@src.gnome.org>
Wed, 8 May 2002 21:58:37 +0000 (21:58 +0000)
2002-05-08  Jeffrey Stedfast  <fejj@ximian.com>

* camel-digest-store.c (digest_setv): Implemented.
(digest_getv): Implemented.

* camel-disco-store.c (disco_setv): Implemented.
(disco_getv): Implemented.

* camel-remote-store.c (remote_store_setv): Implemented.
(remote_store_getv): Implemented.

* camel-transport.c (camel_transport_class_init): Implemented.
(transport_setv): Implemented.
(transport_getv): Implemented.

* camel-store.c (store_setv): Implemented.
(store_getv): Implemented.

* camel-service.c (service_setv): Implemented.
(service_getv): Implemented.

12 files changed:
camel/ChangeLog
camel/camel-digest-store.c
camel/camel-disco-store.c
camel/camel-disco-store.h
camel/camel-remote-store.c
camel/camel-remote-store.h
camel/camel-service.c
camel/camel-service.h
camel/camel-store.c
camel/camel-store.h
camel/camel-transport.c
camel/camel-transport.h

index b00ff2b..3f01082 100644 (file)
@@ -1,5 +1,24 @@
 2002-05-08  Jeffrey Stedfast  <fejj@ximian.com>
 
+       * camel-digest-store.c (digest_setv): Implemented.
+       (digest_getv): Implemented.
+
+       * camel-disco-store.c (disco_setv): Implemented.
+       (disco_getv): Implemented.
+
+       * camel-remote-store.c (remote_store_setv): Implemented.
+       (remote_store_getv): Implemented.
+
+       * camel-transport.c (camel_transport_class_init): Implemented.
+       (transport_setv): Implemented.
+       (transport_getv): Implemented.
+
+       * camel-store.c (store_setv): Implemented.
+       (store_getv): Implemented.
+
+       * camel-service.c (service_setv): Implemented.
+       (service_getv): Implemented.
+
        * providers/pop3/camel-pop3-store.c (pop3_try_authenticate):
        camel_pop3_engine_iterate doesn't return the state, it returns -1
        on fail, 0 when finished processing request or >0 if more ops are
index 3e28334..e3870e3 100644 (file)
@@ -47,7 +47,10 @@ static void camel_digest_store_class_init (CamelDigestStoreClass *klass);
 static void camel_digest_store_init       (CamelDigestStore *obj);
 static void camel_digest_store_finalise   (CamelObject *obj);
 
-static CamelStoreClass *camel_digest_store_parent = NULL;
+static int digest_setv (CamelObject *object, CamelException *ex, CamelArgV *args);
+static int digest_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args);
+
+static CamelStoreClass *parent_class = NULL;
 
 
 CamelType
@@ -72,11 +75,15 @@ camel_digest_store_get_type (void)
 static void
 camel_digest_store_class_init (CamelDigestStoreClass *klass)
 {
+       CamelObjectClass *object_class = (CamelObjectClass *) klass;
        CamelStoreClass *store_class = (CamelStoreClass *) klass;
        
-       camel_digest_store_parent = CAMEL_STORE_CLASS(camel_type_get_global_classfuncs (camel_store_get_type ()));
+       parent_class = CAMEL_STORE_CLASS(camel_type_get_global_classfuncs (camel_store_get_type ()));
        
        /* virtual method overload */
+       object_class->setv = digest_setv;
+       object_class->getv = digest_getv;
+       
        store_class->get_folder = digest_get_folder;
        store_class->rename_folder = digest_rename_folder;
        store_class->delete_folder = digest_delete_folder;
@@ -102,6 +109,20 @@ camel_digest_store_finalise (CamelObject *obj)
        
 }
 
+static int
+digest_setv (CamelObject *object, CamelException *ex, CamelArgV *args)
+{
+       /* CamelDigestStore doesn't currently have anything to set */
+       return CAMEL_OBJECT_CLASS (parent_class)->setv (object, ex, args);
+}
+
+static int
+digest_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args)
+{
+       /* CamelDigestStore doesn't currently have anything to get */
+       return CAMEL_OBJECT_CLASS (parent_class)->getv (object, ex, args);
+}
+
 
 /**
  * camel_digest_store_new:
index b18d889..45207e4 100644 (file)
@@ -33,7 +33,7 @@
 
 #define CDS_CLASS(o) (CAMEL_DISCO_STORE_CLASS (CAMEL_OBJECT_GET_CLASS (o)))
 
-static CamelRemoteStoreClass *remote_store_class = NULL;
+static CamelRemoteStoreClass *parent_class = NULL;
 
 static void disco_construct (CamelService *service, CamelSession *session,
                             CamelProvider *provider, CamelURL *url,
@@ -51,26 +51,34 @@ static void set_status (CamelDiscoStore *disco_store,
                        CamelException *ex);
 static gboolean can_work_offline (CamelDiscoStore *disco_store);
 
+static int disco_setv (CamelObject *object, CamelException *ex, CamelArgV *args);
+static int disco_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args);
+
 static void
 camel_disco_store_class_init (CamelDiscoStoreClass *camel_disco_store_class)
 {
+       CamelObjectClass *camel_object_class =
+               CAMEL_OBJECT_CLASS (camel_disco_store_class);
        CamelServiceClass *camel_service_class =
                CAMEL_SERVICE_CLASS (camel_disco_store_class);
        CamelStoreClass *camel_store_class =
                CAMEL_STORE_CLASS (camel_disco_store_class);
-
-       remote_store_class = CAMEL_REMOTE_STORE_CLASS (camel_type_get_global_classfuncs (camel_remote_store_get_type ()));
-
+       
+       parent_class = CAMEL_REMOTE_STORE_CLASS (camel_type_get_global_classfuncs (camel_remote_store_get_type ()));
+       
        /* virtual method definition */
        camel_disco_store_class->set_status = set_status;
        camel_disco_store_class->can_work_offline = can_work_offline;
-
+       
        /* virtual method overload */
+       camel_object_class->setv = disco_setv;
+       camel_object_class->getv = disco_getv;
+       
        camel_service_class->construct = disco_construct;
        camel_service_class->connect = disco_connect;
        camel_service_class->disconnect = disco_disconnect;
        camel_service_class->cancel_connect = disco_cancel_connect;
-
+       
        camel_store_class->get_folder = disco_get_folder;
        camel_store_class->get_folder_info = disco_get_folder_info;
 }
@@ -94,6 +102,20 @@ camel_disco_store_get_type (void)
        return camel_disco_store_type;
 }
 
+static int
+disco_setv (CamelObject *object, CamelException *ex, CamelArgV *args)
+{
+       /* CamelDiscoStore doesn't currently have anything to set */
+       return CAMEL_OBJECT_CLASS (parent_class)->setv (object, ex, args);
+}
+
+static int
+disco_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args)
+{
+       /* CamelDiscoStore doesn't currently have anything to get */
+       return CAMEL_OBJECT_CLASS (parent_class)->getv (object, ex, args);
+}
+
 static void
 disco_construct (CamelService *service, CamelSession *session,
                 CamelProvider *provider, CamelURL *url,
@@ -101,7 +123,7 @@ disco_construct (CamelService *service, CamelSession *session,
 {
        CamelDiscoStore *disco = CAMEL_DISCO_STORE (service);
 
-       CAMEL_SERVICE_CLASS (remote_store_class)->construct (service, session, provider, url, ex);
+       CAMEL_SERVICE_CLASS (parent_class)->construct (service, session, provider, url, ex);
        if (camel_exception_is_set (ex))
                return;
 
@@ -117,7 +139,7 @@ disco_connect (CamelService *service, CamelException *ex)
 
        status = camel_disco_store_status (store);
        if (status != CAMEL_DISCO_STORE_OFFLINE) {
-               if (!CAMEL_SERVICE_CLASS (remote_store_class)->connect (service, ex)) {
+               if (!CAMEL_SERVICE_CLASS (parent_class)->connect (service, ex)) {
                        status = camel_disco_store_status (store);
                        if (status != CAMEL_DISCO_STORE_OFFLINE)
                                return FALSE;
@@ -160,7 +182,7 @@ disco_cancel_connect (CamelService *service)
        /* Fall back */
        store->status = CAMEL_DISCO_STORE_OFFLINE;
 
-       CAMEL_SERVICE_CLASS (remote_store_class)->cancel_connect (service);
+       CAMEL_SERVICE_CLASS (parent_class)->cancel_connect (service);
 }
 
 static gboolean
@@ -182,7 +204,7 @@ disco_disconnect (CamelService *service, gboolean clean, CamelException *ex)
 
        }
 
-       return CAMEL_SERVICE_CLASS (remote_store_class)->disconnect (service, clean, ex);
+       return CAMEL_SERVICE_CLASS (parent_class)->disconnect (service, clean, ex);
 }
 
 static CamelFolder *
index 575ce1a..01d1164 100644 (file)
@@ -38,6 +38,10 @@ extern "C" {
 #define CAMEL_DISCO_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_DISCO_STORE_TYPE, CamelDiscoStoreClass))
 #define CAMEL_IS_DISCO_STORE(o)    (CAMEL_CHECK_TYPE((o), CAMEL_DISCO_STORE_TYPE))
 
+enum {
+       CAMEL_DISCO_STORE_ARG_FIRST  = CAMEL_REMOTE_STORE_ARG_FIRST + 100,
+};
+
 typedef enum {
        CAMEL_DISCO_STORE_ONLINE,
        CAMEL_DISCO_STORE_OFFLINE,
index 76fdc64..e9eb432 100644 (file)
@@ -23,6 +23,7 @@
  *
  */
 
+
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -66,7 +67,7 @@ extern gboolean camel_verbose_debug;
 #define CSTRC(obj) (CAMEL_STORE_CLASS        (CAMEL_OBJECT_GET_CLASS (obj)))
 #define CRSC(obj)  (CAMEL_REMOTE_STORE_CLASS (CAMEL_OBJECT_GET_CLASS (obj)))
 
-static CamelStoreClass *store_class = NULL;
+static CamelStoreClass *parent_class = NULL;
 
 static void     remote_construct       (CamelService *service, CamelSession *session,
                                        CamelProvider *provider, CamelURL *url,
@@ -82,16 +83,24 @@ static gint     remote_send_stream     (CamelRemoteStore *store, CamelStream *st
 static gint     remote_recv_line       (CamelRemoteStore *store, char **dest, 
                                        CamelException *ex);
 
+static int remote_store_setv (CamelObject *object, CamelException *ex, CamelArgV *args);
+static int remote_store_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args);
+
 static void
 camel_remote_store_class_init (CamelRemoteStoreClass *camel_remote_store_class)
 {
        /* virtual method overload */
+       CamelObjectClass *camel_object_class =
+               CAMEL_OBJECT_CLASS (camel_remote_store_class);
        CamelServiceClass *camel_service_class =
                CAMEL_SERVICE_CLASS (camel_remote_store_class);
        
-       store_class = CAMEL_STORE_CLASS (camel_type_get_global_classfuncs (camel_store_get_type ()));
+       parent_class = CAMEL_STORE_CLASS (camel_type_get_global_classfuncs (camel_store_get_type ()));
        
        /* virtual method overload */
+       camel_object_class->setv = remote_store_setv;
+       camel_object_class->getv = remote_store_getv;
+       
        camel_service_class->construct = remote_construct;
        camel_service_class->connect = remote_connect;
        camel_service_class->disconnect = remote_disconnect;
@@ -162,6 +171,68 @@ camel_remote_store_get_type (void)
        return camel_remote_store_type;
 }
 
+static int
+remote_store_setv (CamelObject *object, CamelException *ex, CamelArgV *args)
+{
+       CamelService *service = (CamelService *) object;
+       CamelURL *url = service->url;
+       guint32 tag;
+       int i;
+       
+       for (i = 0; i < args->argc; i++) {
+               tag = args->argv[i].tag;
+               
+               /* make sure this arg wasn't already handled */
+               if (tag & CAMEL_ARG_IGNORE)
+                       continue;
+               
+               /* make sure this is an arg we're supposed to handle */
+               if ((tag & CAMEL_ARG_TAG) <= CAMEL_REMOTE_STORE_ARG_FIRST ||
+                   (tag & CAMEL_ARG_TAG) >= CAMEL_REMOTE_STORE_ARG_FIRST + 100)
+                       continue;
+               
+               if (tag == CAMEL_REMOTE_STORE_SSL) {
+                       /* set the ssl mode */
+                       camel_url_set_param (url, "use_ssl", args->argv[i].ca_str);
+               } else {
+                       /* error? */
+                       continue;
+               }
+               
+               /* let our parent know that we've handled this arg */
+               camel_argv_ignore (args, i);
+       }
+       
+       return CAMEL_OBJECT_CLASS (parent_class)->setv (object, ex, args);
+}
+
+static int
+remote_store_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args)
+{
+       CamelService *service = (CamelService *) object;
+       CamelURL *url = service->url;
+       guint32 tag;
+       int i;
+       
+       for (i = 0; i < args->argc; i++) {
+               tag = args->argv[i].tag;
+               
+               /* make sure this is an arg we're supposed to handle */
+               if ((tag & CAMEL_ARG_TAG) <= CAMEL_REMOTE_STORE_ARG_FIRST ||
+                   (tag & CAMEL_ARG_TAG) >= CAMEL_REMOTE_STORE_ARG_FIRST + 100)
+                       continue;
+               
+               if (tag == CAMEL_REMOTE_STORE_SSL) {
+                       /* get the ssl mode */
+                       *args->argv[i].ca_str = (char *) camel_url_get_param (url, "use_ssl");
+               } else {
+                       /* error? */
+               }
+       }
+       
+       return CAMEL_OBJECT_CLASS (parent_class)->getv (object, ex, args);
+}
+
 static void
 remote_construct (CamelService *service, CamelSession *session,
                  CamelProvider *provider, CamelURL *url,
@@ -169,7 +240,7 @@ remote_construct (CamelService *service, CamelSession *session,
 {
        CamelRemoteStore *remote_store = CAMEL_REMOTE_STORE (service);
 
-       CAMEL_SERVICE_CLASS (store_class)->construct (service, session, provider, url, ex);
+       CAMEL_SERVICE_CLASS (parent_class)->construct (service, session, provider, url, ex);
 
        if (camel_url_get_param (url, "use_ssl"))
                remote_store->use_ssl = TRUE;
@@ -261,7 +332,7 @@ remote_connect (CamelService *service, CamelException *ex)
        }
        
        /* parent class connect initialization */
-       if (CAMEL_SERVICE_CLASS (store_class)->connect (service, ex) == FALSE)
+       if (CAMEL_SERVICE_CLASS (parent_class)->connect (service, ex) == FALSE)
                return FALSE;
        
        store->ostream = tcp_stream;
@@ -301,7 +372,7 @@ remote_disconnect (CamelService *service, gboolean clean, CamelException *ex)
                store->timeout_id = 0;
        }
        
-       if (!CAMEL_SERVICE_CLASS (store_class)->disconnect (service, clean, ex))
+       if (!CAMEL_SERVICE_CLASS (parent_class)->disconnect (service, clean, ex))
                return FALSE;
        
        if (store->istream) {
index a596ed7..936388f 100644 (file)
@@ -37,6 +37,14 @@ extern "C" {
 #define CAMEL_REMOTE_STORE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_REMOTE_STORE_TYPE, CamelRemoteStoreClass))
 #define CAMEL_IS_REMOTE_STORE(o)    (CAMEL_CHECK_TYPE((o), CAMEL_REMOTE_STORE_TYPE))
 
+
+enum {
+       CAMEL_REMOTE_STORE_ARG_FIRST  = CAMEL_STORE_ARG_FIRST + 100,
+       CAMEL_REMOTE_STORE_ARG_SSL,
+};
+
+#define CAMEL_REMOTE_STORE_SSL (CAMEL_REMOTE_STORE_ARG_SSL | CAMEL_ARG_STR)
+
 typedef struct {
        CamelStore parent_object;       
        struct _CamelRemoteStorePrivate *priv;
index 19c058f..f83c3fe 100644 (file)
@@ -60,16 +60,25 @@ static gboolean service_connect(CamelService *service, CamelException *ex);
 static gboolean service_disconnect(CamelService *service, gboolean clean,
                                   CamelException *ex);
 static void cancel_connect (CamelService *service);
-static GList *  query_auth_types (CamelService *service, CamelException *ex);
-static char *   get_name (CamelService *service, gboolean brief);
-static char *   get_path (CamelService *service);
+static GList *query_auth_types (CamelService *service, CamelException *ex);
+static char *get_name (CamelService *service, gboolean brief);
+static char *get_path (CamelService *service);
+
+static int service_setv (CamelObject *object, CamelException *ex, CamelArgV *args);
+static int service_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args);
 
 
 static void
 camel_service_class_init (CamelServiceClass *camel_service_class)
 {
+       CamelObjectClass *object_class = CAMEL_OBJECT_CLASS (camel_service_class);
+       
        parent_class = camel_type_get_global_classfuncs (CAMEL_OBJECT_TYPE);
-
+       
+       /* virtual method overloading */
+       object_class->setv = service_setv;
+       object_class->getv = service_getv;
+       
        /* virtual method definition */
        camel_service_class->construct = construct;
        camel_service_class->connect = service_connect;
@@ -144,6 +153,120 @@ camel_service_get_type (void)
 }
 
 
+static int
+service_setv (CamelObject *object, CamelException *ex, CamelArgV *args)
+{
+       CamelService *service = (CamelService *) object;
+       CamelURL *url = service->url;
+       gboolean reconnect = FALSE;
+       guint32 tag;
+       int i;
+       
+       for (i = 0; i < args->argc; i++) {
+               tag = args->argv[i].tag;
+               
+               /* make sure this arg wasn't already handled */
+               if (tag & CAMEL_ARG_IGNORE)
+                       continue;
+               
+               /* make sure this is an arg we're supposed to handle */
+               if ((tag & CAMEL_ARG_TAG) <= CAMEL_SERVICE_ARG_FIRST ||
+                   (tag & CAMEL_ARG_TAG) >= CAMEL_SERVICE_ARG_FIRST + 100)
+                       continue;
+               
+               if (tag == CAMEL_SERVICE_USERNAME) {
+                       /* set the username */
+                       if (strcmp (url->user, args->argv[i].ca_str) != 0) {
+                               camel_url_set_user (url, args->argv[i].ca_str);
+                               reconnect = TRUE;
+                       }
+               } else if (tag == CAMEL_SERVICE_AUTH) {
+                       /* set the auth mechanism */
+                       if (strcmp (url->authmech, args->argv[i].ca_str) != 0) {
+                               camel_url_set_authmech (url, args->argv[i].ca_str);
+                               reconnect = TRUE;
+                       }
+               } else if (tag == CAMEL_SERVICE_HOSTNAME) {
+                       /* set the hostname */
+                       if (strcmp (url->host, args->argv[i].ca_str) != 0) {
+                               camel_url_set_host (url, args->argv[i].ca_str);
+                               reconnect = TRUE;
+                       }
+               } else if (tag == CAMEL_SERVICE_PORT) {
+                       /* set the port */
+                       if (url->port != args->argv[i].ca_int) {
+                               camel_url_set_port (url, args->argv[i].ca_int);
+                               reconnect = TRUE;
+                       }
+               } else if (tag == CAMEL_SERVICE_PATH) {
+                       /* set the path */
+                       if (strcmp (url->path, args->argv[i].ca_str) != 0) {
+                               camel_url_set_host (url, args->argv[i].ca_str);
+                               reconnect = TRUE;
+                       }
+               } else {
+                       /* error? */
+                       continue;
+               }
+               
+               /* let our parent know that we've handled this arg */
+               camel_argv_ignore (args, i);
+       }
+       
+       if (reconnect) {
+               /* reconnect the service using the new URL */
+               if (camel_service_disconnect (service, TRUE, ex))
+                       camel_service_connect (service, ex);
+       }
+       
+       return CAMEL_OBJECT_CLASS (parent_class)->setv (object, ex, args);
+}
+
+static int
+service_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args)
+{
+       CamelService *service = (CamelService *) object;
+       CamelURL *url = service->url;
+       guint32 tag;
+       int i;
+       
+       for (i = 0; i < args->argc; i++) {
+               tag = args->argv[i].tag;
+               
+               /* make sure this is an arg we're supposed to handle */
+               if ((tag & CAMEL_ARG_TAG) <= CAMEL_SERVICE_ARG_FIRST ||
+                   (tag & CAMEL_ARG_TAG) >= CAMEL_SERVICE_ARG_FIRST + 100)
+                       continue;
+               
+               switch (tag) {
+               case CAMEL_SERVICE_USERNAME:
+                       /* get the username */
+                       *args->argv[i].ca_str = url->user;
+                       break;
+               case CAMEL_SERVICE_AUTH:
+                       /* get the auth mechanism */
+                       *args->argv[i].ca_str = url->authmech;
+                       break;
+               case CAMEL_SERVICE_HOSTNAME:
+                       /* get the hostname */
+                       *args->argv[i].ca_str = url->host;
+                       break;
+               case CAMEL_SERVICE_PORT:
+                       /* get the port */
+                       *args->argv[i].ca_int = url->port;
+                       break;
+               case CAMEL_SERVICE_PATH:
+                       /* get the path */
+                       *args->argv[i].ca_str = url->path;
+                       break;
+               default:
+                       /* error? */
+               }
+       }
+       
+       return CAMEL_OBJECT_CLASS (parent_class)->getv (object, ex, args);
+}
+
 static void
 construct (CamelService *service, CamelSession *session,
           CamelProvider *provider, CamelURL *url, CamelException *ex)
index cb8b89e..587749e 100644 (file)
@@ -44,6 +44,20 @@ extern "C" {
 #define CAMEL_SERVICE_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_SERVICE_TYPE, CamelServiceClass))
 #define CAMEL_IS_SERVICE(o)    (CAMEL_CHECK_TYPE((o), CAMEL_SERVICE_TYPE))
 
+enum {
+       CAMEL_SERVICE_ARG_FIRST  = CAMEL_ARG_FIRST + 100,
+       CAMEL_SERVICE_ARG_USERNAME,
+       CAMEL_SERVICE_ARG_AUTH,
+       CAMEL_SERVICE_ARG_HOSTNAME,
+       CAMEL_SERVICE_ARG_PORT,
+       CAMEL_SERVICE_ARG_PATH,
+};
+
+#define CAMEL_SERVICE_USERNAME     (CAMEL_SERVICE_ARG_USERNAME | CAMEL_ARG_STR)
+#define CAMEL_SERVICE_AUTH         (CAMEL_SERVICE_ARG_AUTH | CAMEL_ARG_STR)
+#define CAMEL_SERVICE_HOSTNAME     (CAMEL_SERVICE_ARG_HOSTNAME | CAMEL_ARG_STR)
+#define CAMEL_SERVICE_PORT         (CAMEL_SERVICE_ARG_PORT | CAMEL_ARG_INT)
+#define CAMEL_SERVICE_PATH         (CAMEL_SERVICE_ARG_PATH | CAMEL_ARG_STR)
 
 typedef enum {
        CAMEL_SERVICE_DISCONNECTED,
index 6764ac0..ab3d667 100644 (file)
@@ -75,12 +75,15 @@ static void construct (CamelService *service, CamelSession *session,
                       CamelProvider *provider, CamelURL *url,
                       CamelException *ex);
 
+static int store_setv (CamelObject *object, CamelException *ex, CamelArgV *args);
+static int store_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args);
+
 static void
 camel_store_class_init (CamelStoreClass *camel_store_class)
 {
        CamelObjectClass *camel_object_class = CAMEL_OBJECT_CLASS (camel_store_class);
        CamelServiceClass *camel_service_class = CAMEL_SERVICE_CLASS(camel_store_class);
-
+       
        parent_class = CAMEL_SERVICE_CLASS (camel_type_get_global_classfuncs (camel_service_get_type ()));
        
        /* virtual method definition */
@@ -102,7 +105,10 @@ camel_store_class_init (CamelStoreClass *camel_store_class)
        
        /* virtual method overload */
        camel_service_class->construct = construct;
-
+       
+       camel_object_class->setv = store_setv;
+       camel_object_class->getv = store_getv;
+       
        camel_object_class_add_event(camel_object_class, "folder_created", NULL);
        camel_object_class_add_event(camel_object_class, "folder_deleted", NULL);
        camel_object_class_add_event(camel_object_class, "folder_renamed", NULL);
@@ -174,6 +180,19 @@ camel_store_get_type (void)
        return camel_store_type;
 }
 
+static int
+store_setv (CamelObject *object, CamelException *ex, CamelArgV *args)
+{
+       /* CamelStore doesn't currently have anything to set */
+       return CAMEL_OBJECT_CLASS (parent_class)->setv (object, ex, args);
+}
+
+static int
+store_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args)
+{
+       /* CamelStore doesn't currently have anything to get */
+       return CAMEL_OBJECT_CLASS (parent_class)->getv (object, ex, args);
+}
 
 static gboolean
 folder_matches (gpointer key, gpointer value, gpointer user_data)
index af963fe..3d8e10a 100644 (file)
@@ -38,6 +38,9 @@ extern "C" {
 #include <camel/camel-object.h>
 #include <camel/camel-service.h>
 
+enum {
+       CAMEL_STORE_ARG_FIRST  = CAMEL_SERVICE_ARG_FIRST + 100,
+};
 
 typedef struct _CamelFolderInfo {
        struct _CamelFolderInfo *parent,
index dc40275..a1844f3 100644 (file)
 #include "camel-mime-message.h"
 #include "camel-private.h"
 
+static CamelServiceClass *parent_class = NULL;
+
 /* Returns the class for a CamelTransport */
 #define CT_CLASS(so) CAMEL_TRANSPORT_CLASS (CAMEL_OBJECT_GET_CLASS(so))
 
+static int transport_setv (CamelObject *object, CamelException *ex, CamelArgV *args);
+static int transport_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args);
+
+
+static void
+camel_transport_class_init (CamelTransportClass *camel_transport_class)
+{
+       CamelObjectClass *camel_object_class = CAMEL_OBJECT_CLASS (camel_transport_class);
+       
+       parent_class = CAMEL_SERVICE_CLASS (camel_type_get_global_classfuncs (camel_service_get_type ()));
+       
+       /* virtual method overload */
+       camel_object_class->setv = transport_setv;
+       camel_object_class->getv = transport_getv;
+}
+
 static void
 camel_transport_init (gpointer object, gpointer klass)
 {
@@ -77,6 +95,21 @@ camel_transport_get_type (void)
 }
 
 
+static int
+transport_setv (CamelObject *object, CamelException *ex, CamelArgV *args)
+{
+       /* CamelTransport doesn't currently have anything to set */
+       return CAMEL_OBJECT_CLASS (parent_class)->setv (object, ex, args);
+}
+
+static int
+transport_getv (CamelObject *object, CamelException *ex, CamelArgGetV *args)
+{
+       /* CamelTransport doesn't currently have anything to get */
+       return CAMEL_OBJECT_CLASS (parent_class)->getv (object, ex, args);
+}
+
+
 /**
  * camel_transport_send_to:
  * @transport: the transport
index d46f454..d2c1e5b 100644 (file)
@@ -42,6 +42,10 @@ extern "C" {
 #define CAMEL_IS_TRANSPORT(o)    (CAMEL_CHECK_TYPE((o), CAMEL_TRANSPORT_TYPE))
 
 
+enum {
+       CAMEL_TRANSPORT_ARG_FIRST  = CAMEL_SERVICE_ARG_FIRST + 100,
+};
+
 struct _CamelTransport
 {
        CamelService parent_object;