/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* camel-service.h : Abstract class for an email service */
-
-/*
+/*
*
- * Author :
- * Bertrand Guiheneuf <bertrand@helixcode.com>
+ * Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
+ * Michael Zucchi <notzed@ximian.com>
*
- * Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * GNU Lesser General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
+ * You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*/
+#if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION)
+#error "Only <camel/camel.h> can be included directly."
+#endif
#ifndef CAMEL_SERVICE_H
-#define CAMEL_SERVICE_H 1
-
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus }*/
+#define CAMEL_SERVICE_H
+
+#include <camel/camel-enums.h>
+#include <camel/camel-object.h>
+#include <camel/camel-url.h>
+#include <camel/camel-provider.h>
+#include <camel/camel-operation.h>
+#include <camel/camel-settings.h>
+
+/* Standard GObject macros */
+#define CAMEL_TYPE_SERVICE \
+ (camel_service_get_type ())
+#define CAMEL_SERVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST \
+ ((obj), CAMEL_TYPE_SERVICE, CamelService))
+#define CAMEL_SERVICE_CLASS(cls) \
+ (G_TYPE_CHECK_CLASS_CAST \
+ ((cls), CAMEL_TYPE_SERVICE, CamelServiceClass))
+#define CAMEL_IS_SERVICE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE \
+ ((obj), CAMEL_TYPE_SERVICE))
+#define CAMEL_IS_SERVICE_CLASS(obj) \
+ (G_TYPE_CHECK_CLASS_TYPE \
+ ((cls), CAMEL_TYPE_SERVICE))
+#define CAMEL_SERVICE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS \
+ ((obj), CAMEL_TYPE_SERVICE, CamelServiceClass))
+
+/**
+ * CAMEL_SERVICE_ERROR:
+ *
+ * Since: 2.32
+ **/
+#define CAMEL_SERVICE_ERROR \
+ (camel_service_error_quark ())
-#include <gtk/gtk.h>
-#include <netdb.h>
-#include "camel-types.h"
-#include "camel-url.h"
+G_BEGIN_DECLS
-#define CAMEL_SERVICE_TYPE (camel_service_get_type ())
-#define CAMEL_SERVICE(obj) (GTK_CHECK_CAST((obj), CAMEL_SERVICE_TYPE, CamelService))
-#define CAMEL_SERVICE_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), CAMEL_SERVICE_TYPE, CamelServiceClass))
-#define CAMEL_IS_SERVICE(o) (GTK_CHECK_TYPE((o), CAMEL_SERVICE_TYPE))
+struct _CamelSession;
+typedef struct _CamelService CamelService;
+typedef struct _CamelServiceClass CamelServiceClass;
+typedef struct _CamelServicePrivate CamelServicePrivate;
+/**
+ * CamelServiceError:
+ *
+ * Since: 2.32
+ **/
+typedef enum {
+ CAMEL_SERVICE_ERROR_INVALID,
+ CAMEL_SERVICE_ERROR_URL_INVALID,
+ CAMEL_SERVICE_ERROR_UNAVAILABLE,
+ CAMEL_SERVICE_ERROR_CANT_AUTHENTICATE,
+ CAMEL_SERVICE_ERROR_NOT_CONNECTED
+} CamelServiceError;
struct _CamelService {
- GtkObject parent_object;
-
- CamelSession *session;
- gboolean connected;
- CamelURL *url;
- int url_flags;
-
+ CamelObject parent;
+ CamelServicePrivate *priv;
};
-
-
-typedef struct {
- GtkObjectClass parent_class;
-
- gboolean (*connect) (CamelService *service,
- CamelException *ex);
- gboolean (*connect_with_url) (CamelService *service,
- CamelURL *url,
- CamelException *ex);
- gboolean (*disconnect) (CamelService *service,
- CamelException *ex);
-
- gboolean (*is_connected) (CamelService *service);
-
- GList * (*query_auth_types) (CamelService *service,
- CamelException *ex);
- void (*free_auth_types) (CamelService *service,
- GList *authtypes);
-
-} CamelServiceClass;
-
-
-
-/* flags for url_flags. (others can be added if needed) */
-#define CAMEL_SERVICE_URL_NEED_USER (1 << 1)
-#define CAMEL_SERVICE_URL_NEED_AUTH (1 << 2)
-#define CAMEL_SERVICE_URL_NEED_HOST (1 << 4)
-#define CAMEL_SERVICE_URL_NEED_PATH (1 << 6)
-
+struct _CamelServiceClass {
+ CamelObjectClass parent_class;
+
+ GType settings_type;
+
+ /* Non-Blocking Methods */
+ gchar * (*get_name) (CamelService *service,
+ gboolean brief);
+
+ /* Synchronous I/O Methods */
+ gboolean (*connect_sync) (CamelService *service,
+ GCancellable *cancellable,
+ GError **error);
+ gboolean (*disconnect_sync) (CamelService *service,
+ gboolean clean,
+ GCancellable *cancellable,
+ GError **error);
+ CamelAuthenticationResult
+ (*authenticate_sync) (CamelService *service,
+ const gchar *mechanism,
+ GCancellable *cancellable,
+ GError **error);
+ GList * (*query_auth_types_sync)
+ (CamelService *service,
+ GCancellable *cancellable,
+ GError **error);
+
+ /* Asynchronous I/O Methods (all have defaults) */
+ void (*connect) (CamelService *service,
+ gint io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+ gboolean (*connect_finish) (CamelService *service,
+ GAsyncResult *result,
+ GError **error);
+ void (*disconnect) (CamelService *service,
+ gboolean clean,
+ gint io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+ gboolean (*disconnect_finish) (CamelService *service,
+ GAsyncResult *result,
+ GError **error);
+ void (*authenticate) (CamelService *service,
+ const gchar *mechanism,
+ gint io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+ CamelAuthenticationResult
+ (*authenticate_finish) (CamelService *service,
+ GAsyncResult *result,
+ GError **error);
+ void (*query_auth_types) (CamelService *service,
+ gint io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+ GList * (*query_auth_types_finish)
+ (CamelService *service,
+ GAsyncResult *result,
+ GError **error);
+};
/* query_auth_types returns a GList of these */
typedef struct {
- char *name, *description, *authproto;
- gboolean need_password;
-} CamelServiceAuthType;
-
-
-/* public methods */
-CamelService * camel_service_new (GtkType type,
- CamelSession *session,
- CamelURL *url,
- CamelException *ex);
+ const gchar *name; /* user-friendly name */
+ const gchar *description;
+ const gchar *authproto;
-gboolean camel_service_connect (CamelService *service,
- CamelException *ex);
-gboolean camel_service_connect_with_url (CamelService *service,
- char *url,
- CamelException *ex);
-gboolean camel_service_disconnect (CamelService *service,
- CamelException *ex);
-gboolean camel_service_is_connected (CamelService *service);
-
-char * camel_service_get_url (CamelService *service);
-CamelSession * camel_service_get_session (CamelService *service);
-
-GList * camel_service_query_auth_types (CamelService *service,
- CamelException *ex);
-void camel_service_free_auth_types (CamelService *service,
- GList *authtypes);
-
-/* convenience functions */
-struct hostent * camel_service_gethost (CamelService *service,
- CamelException *ex);
-
-
-/* Standard Gtk function */
-GtkType camel_service_get_type (void);
+ gboolean need_password; /* needs a password to authenticate */
+} CamelServiceAuthType;
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+GType camel_service_get_type (void);
+GQuark camel_service_error_quark (void) G_GNUC_CONST;
+void camel_service_migrate_files (CamelService *service);
+CamelURL * camel_service_new_camel_url (CamelService *service);
+CamelServiceConnectionStatus
+ camel_service_get_connection_status
+ (CamelService *service);
+const gchar * camel_service_get_display_name (CamelService *service);
+void camel_service_set_display_name (CamelService *service,
+ const gchar *display_name);
+const gchar * camel_service_get_password (CamelService *service);
+void camel_service_set_password (CamelService *service,
+ const gchar *password);
+const gchar * camel_service_get_user_data_dir (CamelService *service);
+const gchar * camel_service_get_user_cache_dir
+ (CamelService *service);
+gchar * camel_service_get_name (CamelService *service,
+ gboolean brief);
+CamelProvider * camel_service_get_provider (CamelService *service);
+struct _CamelSession *
+ camel_service_ref_session (CamelService *service);
+CamelSettings * camel_service_ref_settings (CamelService *service);
+void camel_service_set_settings (CamelService *service,
+ CamelSettings *settings);
+const gchar * camel_service_get_uid (CamelService *service);
+
+gboolean camel_service_connect_sync (CamelService *service,
+ GCancellable *cancellable,
+ GError **error);
+void camel_service_connect (CamelService *service,
+ gint io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean camel_service_connect_finish (CamelService *service,
+ GAsyncResult *result,
+ GError **error);
+gboolean camel_service_disconnect_sync (CamelService *service,
+ gboolean clean,
+ GCancellable *cancellable,
+ GError **error);
+void camel_service_disconnect (CamelService *service,
+ gboolean clean,
+ gint io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+gboolean camel_service_disconnect_finish (CamelService *service,
+ GAsyncResult *result,
+ GError **error);
+CamelAuthenticationResult
+ camel_service_authenticate_sync (CamelService *service,
+ const gchar *mechanism,
+ GCancellable *cancellable,
+ GError **error);
+void camel_service_authenticate (CamelService *service,
+ const gchar *mechanism,
+ gint io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+CamelAuthenticationResult
+ camel_service_authenticate_finish
+ (CamelService *service,
+ GAsyncResult *result,
+ GError **error);
+GList * camel_service_query_auth_types_sync
+ (CamelService *service,
+ GCancellable *cancellable,
+ GError **error);
+void camel_service_query_auth_types (CamelService *service,
+ gint io_priority,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+GList * camel_service_query_auth_types_finish
+ (CamelService *service,
+ GAsyncResult *result,
+ GError **error);
+
+#ifndef CAMEL_DISABLE_DEPRECATED
+struct _CamelSession *
+ camel_service_get_session (CamelService *service);
+#endif /* CAMEL_DISABLE_DEPRECATED */
+
+G_END_DECLS
#endif /* CAMEL_SERVICE_H */
-