diff options
| author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-07-26 12:09:07 +0000 |
|---|---|---|
| committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-07-26 12:09:07 +0000 |
| commit | b08787ecd10aeef88a909e2c43a99846f2e933e5 (patch) | |
| tree | 24b089d5ba3dd31a4515aa75a56d9f3990a5bbfe | |
| parent | 75eea32b80fb96d6dc563719458f64b1731a6118 (diff) | |
| download | lasso-b08787ecd10aeef88a909e2c43a99846f2e933e5.tar.gz lasso-b08787ecd10aeef88a909e2c43a99846f2e933e5.tar.xz lasso-b08787ecd10aeef88a909e2c43a99846f2e933e5.zip | |
Finished to implement lasso_login_destroy() and lasso_logout_destroy() methods
| -rw-r--r-- | lasso/id-ff/login.c | 31 | ||||
| -rw-r--r-- | lasso/id-ff/login.h | 2 | ||||
| -rw-r--r-- | lasso/id-ff/logout.c | 35 | ||||
| -rw-r--r-- | lasso/id-ff/logout.h | 2 |
4 files changed, 68 insertions, 2 deletions
diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c index 72b0c696..5862f8d2 100644 --- a/lasso/id-ff/login.c +++ b/lasso/id-ff/login.c @@ -37,6 +37,11 @@ static GObjectClass *parent_class = NULL; +struct _LassoLoginPrivate +{ + gboolean dispose_has_run; +}; + /*****************************************************************************/ /* functions */ /*****************************************************************************/ @@ -851,6 +856,21 @@ lasso_login_process_response_msg(LassoLogin *login, /*****************************************************************************/ static void +lasso_login_dispose(LassoLogin *login) +{ + if (login->private->dispose_has_run) { + return; + } + login->private->dispose_has_run = TRUE; + + debug("ProfileContext object 0x%x disposed ...\n", login); + + /* unref reference counted objects */ + + parent_class->dispose(G_OBJECT(login)); +} + +static void lasso_login_finalize(LassoLogin *login) { debug("Login object 0x%x finalized ...\n", login); @@ -858,6 +878,8 @@ lasso_login_finalize(LassoLogin *login) g_free(login->assertionArtifact); g_free(login->response_dump); + g_free (login->private); + parent_class->finalize(G_OBJECT(login)); } @@ -866,8 +888,14 @@ lasso_login_finalize(LassoLogin *login) /*****************************************************************************/ static void -lasso_login_instance_init(LassoLogin *login) +lasso_login_instance_init(GTypeInstance *instance, + gpointer g_class) { + LassoLogin *login = LASSO_LOGIN(instance); + + login->private = g_new (LassoLoginPrivate, 1); + login->private->dispose_has_run = FALSE; + login->protocolProfile = 0; login->assertionArtifact = NULL; login->response_dump = NULL; @@ -880,6 +908,7 @@ lasso_login_class_init(LassoLoginClass *class) parent_class = g_type_class_peek_parent(class); /* override parent class methods */ + gobject_class->dispose = (void *)lasso_login_dispose; gobject_class->finalize = (void *)lasso_login_finalize; } diff --git a/lasso/id-ff/login.h b/lasso/id-ff/login.h index 4607d3b7..50173af3 100644 --- a/lasso/id-ff/login.h +++ b/lasso/id-ff/login.h @@ -47,6 +47,7 @@ extern "C" { typedef struct _LassoLogin LassoLogin; typedef struct _LassoLoginClass LassoLoginClass; +typedef struct _LassoLoginPrivate LassoLoginPrivate; typedef enum { lassoLoginProtocolProfileBrwsArt = 1, @@ -61,6 +62,7 @@ struct _LassoLogin { gchar *assertionArtifact; gchar *response_dump; /*< private >*/ + LassoLoginPrivate *private; }; struct _LassoLoginClass { diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index 65219d7e..1bf252d6 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -27,6 +27,11 @@ static GObjectClass *parent_class = NULL; +struct _LassoLogoutPrivate +{ + gboolean dispose_has_run; +}; + /*****************************************************************************/ /* public methods */ /*****************************************************************************/ @@ -489,10 +494,31 @@ lasso_logout_process_response_msg(LassoLogout *logout, /*****************************************************************************/ static void +lasso_logout_dispose(LassoLogout *logout) +{ + if (logout->private->dispose_has_run) { + return; + } + logout->private->dispose_has_run = TRUE; + + debug("ProfileContext object 0x%x disposed ...\n", logout); + + /* unref reference counted objects */ + lasso_node_destroy(logout->first_request); + lasso_node_destroy(logout->first_response); + + parent_class->dispose(G_OBJECT(logout)); +} + +static void lasso_logout_finalize(LassoLogout *logout) { debug("Logout object 0x%x finalized ...\n", logout); + g_free(logout->first_remote_providerID); + + g_free(logout->private); + parent_class->finalize(G_OBJECT(logout)); } @@ -501,8 +527,14 @@ lasso_logout_finalize(LassoLogout *logout) /*****************************************************************************/ static void -lasso_logout_instance_init(LassoLogout *logout) +lasso_logout_instance_init(GTypeInstance *instance, + gpointer g_class) { + LassoLogout *logout = LASSO_LOGOUT(instance); + + logout->private = g_new (LassoLogoutPrivate, 1); + logout->private->dispose_has_run = FALSE; + logout->first_request = NULL; logout->first_response = NULL; logout->first_remote_providerID = NULL; @@ -515,6 +547,7 @@ lasso_logout_class_init(LassoLogoutClass *class) parent_class = g_type_class_peek_parent(class); /* override parent class methods */ + gobject_class->dispose = (void *)lasso_logout_dispose; gobject_class->finalize = (void *)lasso_logout_finalize; } diff --git a/lasso/id-ff/logout.h b/lasso/id-ff/logout.h index adf3bdba..42644ca7 100644 --- a/lasso/id-ff/logout.h +++ b/lasso/id-ff/logout.h @@ -44,6 +44,7 @@ extern "C" { typedef struct _LassoLogout LassoLogout; typedef struct _LassoLogoutClass LassoLogoutClass; +typedef struct _LassoLogoutPrivate LassoLogoutPrivate; struct _LassoLogout { LassoProfileContext parent; @@ -54,6 +55,7 @@ struct _LassoLogout { gchar *first_remote_providerID; /*< private >*/ + LassoLogoutPrivate *private; }; struct _LassoLogoutClass { |
