From 63e96e100291b330e75cc3b3b49795c720e5ffa0 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 27 Apr 2001 21:08:08 +0000 Subject: Redo this a lot so that instead of having a class full of callbacks, we * camel-session.c: Redo this a lot so that instead of having a class full of callbacks, we have a subclassable class. Also, replace the increasingly horrifying camel_session_query_authenticator with three new routines, camel_session_get_password, camel_session_forget_password, and camel_session_alert_user. * camel-pgp-context.c: * camel-pkcs7-context.c: * camel-smime-context.c: * providers/imap/camel-imap-store.c: * providers/pop3/camel-pop3-store.c: * providers/smtp/camel-smtp-transport.c: Use camel_session_get_password / camel_session_forget_password. * camel-tcp-stream-ssl.c (ssl_bad_cert): Use camel_session_alert_user. svn path=/trunk/; revision=9617 --- camel/camel-session.h | 143 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 86 insertions(+), 57 deletions(-) (limited to 'camel/camel-session.h') diff --git a/camel/camel-session.h b/camel/camel-session.h index c73fa853ce..e777bdcb6c 100644 --- a/camel/camel-session.h +++ b/camel/camel-session.h @@ -43,22 +43,12 @@ extern "C" { #define CAMEL_IS_SESSION(o) (CAMEL_CHECK_TYPE((o), CAMEL_SESSION_TYPE)) -typedef enum { - CAMEL_AUTHENTICATOR_ASK, - CAMEL_AUTHENTICATOR_TELL, - CAMEL_AUTHENTICATOR_ACCEPT -} CamelAuthCallbackMode; - -typedef gpointer (*CamelAuthCallback) (CamelAuthCallbackMode mode, - char *data, gboolean secret, - CamelService *service, char *item, - CamelException *ex); - typedef gboolean (*CamelTimeoutCallback) (gpointer data); -typedef guint (*CamelTimeoutRegisterCallback) (guint32 interval, - CamelTimeoutCallback cb, - gpointer camel_data); -typedef gboolean (*CamelTimeoutRemoveCallback) (guint id); +typedef enum { + CAMEL_SESSION_ALERT_INFO, + CAMEL_SESSION_ALERT_WARNING, + CAMEL_SESSION_ALERT_ERROR +} CamelSessionAlertType; struct _CamelSession { @@ -66,16 +56,50 @@ struct _CamelSession struct _CamelSessionPrivate *priv; char *storage_path; - CamelAuthCallback authenticator; - CamelTimeoutRegisterCallback registrar; - CamelTimeoutRemoveCallback remover; - GHashTable *providers, *modules; }; typedef struct { CamelObjectClass parent_class; + void (*register_provider) (CamelSession *session, + CamelProvider *provider); + GList * (*list_providers) (CamelSession *session, + gboolean load); + CamelProvider * (*get_provider) (CamelSession *session, + const char *url_string, + CamelException *ex); + + CamelService * (*get_service) (CamelSession *session, + const char *url_string, + CamelProviderType type, + CamelException *ex); + char * (*get_storage_path) (CamelSession *session, + CamelService *service, + CamelException *ex); + + char * (*get_password) (CamelSession *session, + const char *prompt, + gboolean secret, + CamelService *service, + const char *item, + CamelException *ex); + void (*forget_password) (CamelSession *session, + CamelService *service, + const char *item, + CamelException *ex); + gboolean (*alert_user) (CamelSession *session, + CamelSessionAlertType type, + const char *prompt, + gboolean cancel); + + guint (*register_timeout) (CamelSession *session, + guint32 interval, + CamelTimeoutCallback callback, + gpointer user_data); + gboolean (*remove_timeout) (CamelSession *session, + guint handle); + } CamelSessionClass; @@ -85,53 +109,58 @@ typedef struct { CamelType camel_session_get_type (void); -CamelSession * camel_session_new (const char *storage_path, - CamelAuthCallback authenticator, - CamelTimeoutRegisterCallback registrar, - CamelTimeoutRemoveCallback remover); +void camel_session_construct (CamelSession *session, + const char *storage_path); -void camel_session_register_provider (CamelSession *session, - CamelProvider *provider); -GList * camel_session_list_providers (CamelSession *session, - gboolean load); +void camel_session_register_provider (CamelSession *session, + CamelProvider *provider); +GList * camel_session_list_providers (CamelSession *session, + gboolean load); -CamelProvider * camel_session_get_provider (CamelSession *session, - const char *url_string, - CamelException *ex); +CamelProvider * camel_session_get_provider (CamelSession *session, + const char *url_string, + CamelException *ex); -CamelService * camel_session_get_service (CamelSession *session, - const char *url_string, - CamelProviderType type, - CamelException *ex); -CamelService * camel_session_get_service_connected (CamelSession *session, - const char *url_string, - CamelProviderType type, - CamelException *ex); +CamelService * camel_session_get_service (CamelSession *session, + const char *url_string, + CamelProviderType type, + CamelException *ex); +CamelService * camel_session_get_service_connected (CamelSession *session, + const char *url_string, + CamelProviderType type, + CamelException *ex); #define camel_session_get_store(session, url_string, ex) \ ((CamelStore *) camel_session_get_service_connected (session, url_string, CAMEL_PROVIDER_STORE, ex)) #define camel_session_get_transport(session, url_string, ex) \ ((CamelTransport *) camel_session_get_service_connected (session, url_string, CAMEL_PROVIDER_TRANSPORT, ex)) -char * camel_session_get_storage_path (CamelSession *session, - CamelService *service, - CamelException *ex); - -gpointer camel_session_query_authenticator (CamelSession *session, - CamelAuthCallbackMode mode, - char *prompt, - gboolean secret, - CamelService *service, - char *item, - CamelException *ex); - -guint camel_session_register_timeout (CamelSession *session, - guint32 interval, - CamelTimeoutCallback callback, - gpointer user_data); - -gboolean camel_session_remove_timeout (CamelSession *session, - guint handle); +char * camel_session_get_storage_path (CamelSession *session, + CamelService *service, + CamelException *ex); + +char * camel_session_get_password (CamelSession *session, + const char *prompt, + gboolean secret, + CamelService *service, + const char *item, + CamelException *ex); +void camel_session_forget_password (CamelSession *session, + CamelService *service, + const char *item, + CamelException *ex); +gboolean camel_session_alert_user (CamelSession *session, + CamelSessionAlertType type, + const char *prompt, + gboolean cancel); + +guint camel_session_register_timeout (CamelSession *session, + guint32 interval, + CamelTimeoutCallback callback, + gpointer user_data); + +gboolean camel_session_remove_timeout (CamelSession *session, + guint handle); #ifdef __cplusplus } -- cgit v1.2.3