aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-service.h
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2001-09-27 22:39:39 +0800
committerDan Winship <danw@src.gnome.org>2001-09-27 22:39:39 +0800
commit5120d7098b94b95a75993be8faa3377507a50b45 (patch)
treec3f8f8a9e1e8049feb869b2084db6d032133b2c6 /camel/camel-service.h
parentf967421b532778246b6b68226c9eb42ad1eaa5d1 (diff)
downloadgsoc2013-evolution-5120d7098b94b95a75993be8faa3377507a50b45.tar.gz
gsoc2013-evolution-5120d7098b94b95a75993be8faa3377507a50b45.tar.zst
gsoc2013-evolution-5120d7098b94b95a75993be8faa3377507a50b45.zip
Change "gboolean connected" to "CamelServiceConnectionStatus status",
* camel-service.c: Change "gboolean connected" to "CamelServiceConnectionStatus status", which can be disconnected, connecting, connected, or disconnecting. (camel_service_init, camel_service_finalize): create/destroy the connect_op_lock. Refer to service->status rather than service->connected. (camel_service_connect): When connecting, note the current operation (and create a new one if there's none registered) and mark the connection "connecting" until we succeed or fail. (camel_service_disconnect): Likewise in reverse. (camel_service_cancel_connect): New function to cancel a connection attempt. (cancel_connect): Default implementation: Call camel_operation_cancel on the connect_op. * camel-disco-store.c (disco_connect): Only call CamelRemoteStore's connect func if we're online. (disco_cancel_connect): Fall back to offline if a connection gets cancelled. (disco_get_folder_info): Kludge: call connect explicitly before deciding whether to do the online or offline version, so if the connect fails, we fall back correctly. * camel-session.c (camel_session_get_service_connected): s/svc->connected/svc->status/ * camel-remote-store.c (camel_remote_store_finalise): Change service->connected check to service->status check. (remote_connect): Don't set service->connected here: camel_service_connect() itself does that. * camel-operation.c (camel_operation_registered): Deal with the possibility that there's no registered op. svn path=/trunk/; revision=13191
Diffstat (limited to 'camel/camel-service.h')
-rw-r--r--camel/camel-service.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/camel/camel-service.h b/camel/camel-service.h
index 41ac53c4c7..a4399811cf 100644
--- a/camel/camel-service.h
+++ b/camel/camel-service.h
@@ -38,6 +38,7 @@ extern "C" {
#include <camel/camel-object.h>
#include <camel/camel-url.h>
#include <camel/camel-provider.h>
+#include <camel/camel-operation.h>
#define CAMEL_SERVICE_TYPE (camel_service_get_type ())
#define CAMEL_SERVICE(obj) (CAMEL_CHECK_CAST((obj), CAMEL_SERVICE_TYPE, CamelService))
@@ -45,13 +46,21 @@ extern "C" {
#define CAMEL_IS_SERVICE(o) (CAMEL_CHECK_TYPE((o), CAMEL_SERVICE_TYPE))
+typedef enum {
+ CAMEL_SERVICE_DISCONNECTED,
+ CAMEL_SERVICE_CONNECTING,
+ CAMEL_SERVICE_CONNECTED,
+ CAMEL_SERVICE_DISCONNECTING
+} CamelServiceConnectionStatus;
+
struct _CamelService {
CamelObject parent_object;
struct _CamelServicePrivate *priv;
CamelSession *session;
CamelProvider *provider;
- gboolean connected;
+ CamelServiceConnectionStatus status;
+ CamelOperation *connect_op;
CamelURL *url;
};
@@ -70,6 +79,7 @@ typedef struct {
gboolean (*disconnect) (CamelService *service,
gboolean clean,
CamelException *ex);
+ void (*cancel_connect) (CamelService *service);
GList * (*query_auth_types) (CamelService *service,
CamelException *ex);
@@ -102,6 +112,7 @@ gboolean camel_service_connect (CamelService *service,
gboolean camel_service_disconnect (CamelService *service,
gboolean clean,
CamelException *ex);
+void camel_service_cancel_connect (CamelService *service);
char * camel_service_get_url (CamelService *service);
char * camel_service_get_name (CamelService *service,
gboolean brief);