diff options
author | Dan Winship <danw@src.gnome.org> | 2001-09-27 22:39:39 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2001-09-27 22:39:39 +0800 |
commit | 5120d7098b94b95a75993be8faa3377507a50b45 (patch) | |
tree | c3f8f8a9e1e8049feb869b2084db6d032133b2c6 /camel/camel-service.h | |
parent | f967421b532778246b6b68226c9eb42ad1eaa5d1 (diff) | |
download | gsoc2013-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.h | 13 |
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); |