gpointer user_data;
} _AuthSessionDbusInfo;
+//FIXME: needs to take GSignondSessionData instead of GVariant
static void
-_on_process_result (GSignondAuthSessionIface *auth_session, const GVariant *result, gpointer user_data)
+_on_process_result (GSignondAuthSessionIface *auth_session, GVariant *result, gpointer user_data)
{
_AuthSessionDbusInfo *info = (_AuthSessionDbusInfo *) info;
GSignondDbusAuthSession *iface = GSIGNOND_DBUS_AUTH_SESSION (info->adapter);
g_free (info);
}
+//FIXME: needs to take GError instead of guint
static void
_on_process_error (GSignondAuthSessionIface *auth_session, guint error, gpointer user_data)
{
{
_AuthSessionDbusInfo *info = 0;
- gsignond_auth_session_iface_process (self->priv->parent, session_data, mechanisms);
+//FIXME: need to convert GVariant to GSignondSessionData
+/* gsignond_auth_session_iface_process (self->priv->parent, session_data, mechanisms);
info = g_new0 (_AuthSessionDbusInfo, 1);
info->adapter = self;
info->invocation = invocation;
g_signal_connect (self->priv->parent, "process-error", G_CALLBACK(_on_process_error), self);
- g_signal_connect (self->priv->parent, "process-result", G_CALLBACK (_on_process_result), self);
+ g_signal_connect (self->priv->parent, "process-result", G_CALLBACK (_on_process_result), self);*/
}
static void
#include "gsignond-auth-session-iface.h"
-G_DEFINE_INTERFACE (GSignondAuthSessionIface, gsignond_auth_session_iface, G_TYPE_OBJECT)
+G_DEFINE_INTERFACE (GSignondAuthSessionIface, gsignond_auth_session_iface, 0)
enum {
SIG_PROCESS_RESULT,
SIG_PROCESS_ERROR,
+ SIG_PROCESS_STORE,
+ SIG_PROCESS_USER_ACTION_REQUIRED,
+ SIG_PROCESS_REFRESHED,
+ SIG_PROCESS_STATUS_CHANGED,
+
SIG_MAX
};
-guint signals[SIG_MAX];
-
-static gchar **
-_dummy_query_available_mechanisms (GSignondAuthSessionIface *self,
- const gchar **wanted_mechanisms)
-{
- (void) self;
- (void) wanted_mechanisms;
- return NULL;
-}
-
-static gboolean
-_dummy_process (GSignondAuthSessionIface *self, const GVariant *session_data,
- const gchar *mechanism)
-{
- (void) self;
- (void) session_data;
- (void) mechanism;
-
- return FALSE;
-}
-
-static void
-_dummy_cancel (GSignondAuthSessionIface *self)
-{
- (void) self;
-}
+guint signals[SIG_MAX] = { 0 };
static void
gsignond_auth_session_iface_default_init (
GSignondAuthSessionIfaceInterface *self)
{
- self->query_available_mechanisms = _dummy_query_available_mechanisms;
- self->process = _dummy_process;
- self->cancel = _dummy_cancel;
-
/**
* GSignondAuthSessionIfaceInterface::process:
* @object: A #GSignondAuthServiceIface.
NULL,
G_TYPE_NONE,
1,
- G_TYPE_VARIANT);
+ GSIGNOND_TYPE_SESSION_DATA);
signals[SIG_PROCESS_ERROR] = g_signal_new ("process-error",
G_TYPE_FROM_INTERFACE (self),
G_TYPE_NONE,
1,
G_TYPE_ERROR);
+
+ signals[SIG_PROCESS_STORE] = g_signal_new ("process-store",
+ G_TYPE_FROM_INTERFACE (self),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 1,
+ GSIGNOND_TYPE_SESSION_DATA);
+
+ signals[SIG_PROCESS_USER_ACTION_REQUIRED] = g_signal_new (
+ "process-user-action-required",
+ G_TYPE_FROM_INTERFACE (self),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 1,
+ GSIGNOND_TYPE_SESSION_DATA);
+
+ signals[SIG_PROCESS_REFRESHED] = g_signal_new (
+ "process-refreshed",
+ G_TYPE_FROM_INTERFACE (self),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 1,
+ GSIGNOND_TYPE_SESSION_DATA);
+
+ signals[SIG_PROCESS_STATUS_CHANGED] = g_signal_new (
+ "status-changed",
+ G_TYPE_FROM_INTERFACE (self),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_STRING, G_TYPE_STRING);
}
gchar **
gboolean
gsignond_auth_session_iface_process (GSignondAuthSessionIface *self,
- const GVariant *session_data,
+ GSignondSessionData *session_data,
const gchar *mechanism)
{
return GSIGNOND_AUTH_SESSION_GET_INTERFACE (self)->
return GSIGNOND_AUTH_SESSION_GET_INTERFACE (self)->cancel (self);
}
+void
+gsignond_auth_session_iface_user_action_finished (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data)
+{
+ return GSIGNOND_AUTH_SESSION_GET_INTERFACE (self)->
+ user_action_finished (self, session_data);
+}
+
+void
+gsignond_auth_session_iface_refresh (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data)
+{
+ return GSIGNOND_AUTH_SESSION_GET_INTERFACE (self)->
+ refresh (self, session_data);
+}
+
void
gsignond_auth_session_iface_notify_process_result (
GSignondAuthSessionIface *iface,
- const GVariant *result)
+ GSignondSessionData *result)
{
g_signal_emit (iface, signals[SIG_PROCESS_RESULT], 0, result);
}
{
g_signal_emit (iface, signals[SIG_PROCESS_ERROR], 0, error);
}
+
+void
+gsignond_auth_session_iface_notify_store (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data)
+{
+ g_signal_emit (self, signals[SIG_PROCESS_STORE], 0, session_data);
+}
+
+void
+gsignond_auth_session_iface_notify_user_action_required (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data)
+{
+ g_signal_emit (self, signals[SIG_PROCESS_USER_ACTION_REQUIRED], 0,
+ session_data);
+}
+
+void
+gsignond_auth_session_iface_notify_refreshed (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data)
+{
+ g_signal_emit (self, signals[SIG_PROCESS_REFRESHED], 0, session_data);
+}
+
+void
+gsignond_auth_session_iface_notify_status_changed (GSignondAuthSessionIface *self,
+ const gchar *status,
+ const gchar *message)
+{
+ g_signal_emit (self, signals[SIG_PROCESS_STATUS_CHANGED], 0, status,
+ message);
+}
#include <glib.h>
#include <glib-object.h>
+#include <gsignond/gsignond-session-data.h>
G_BEGIN_DECLS
* @session_data: authentication session data to use
* @mechansims: authentication mechanism to use
*
- * Initiates authentication process on #session, On successful authentication #process_reply will be called.
- * In case failure occured in authentication process, the error is informed via #process_error.
+ * Initiates authentication process on #session, On successful authentication #gsignond_auth_session_iface_notify_process_result will be called.
+ * In case failure occured in authentication process, the error is informed via #gsignond_auth_session_iface_notify_process_error.
* Returns: @TRUE if authentication process was started successfully, @FALSE otherwise
*/
gboolean (*process) (GSignondAuthSessionIface *session,
- const GVariant *session_data,
+ GSignondSessionData *session_data,
const gchar *mechanism);
/**
*/
void (*cancel) (GSignondAuthSessionIface *session);
- /* handlers */
- /**
- * process_reply:
- * @session: instance of #GSignondAuthSessionIface
- * @results: authentication process results
- *
- * Function to be called with #results on authentication process success.
- */
- void (*process_reply) (GSignondAuthSessionIface *session,
- const GVariant *results);
-
- /**
- * process_error:
- * @session: instance of #GSignondAuthSessionIface
- * @error: error of type #GError, occured during authentication process
- *
- * Function to be called with #error on authentication process failure.
- */
- void (*process_error) (GSignondAuthSessionIface *session,
- const GError *error);
+ void (*user_action_finished) (GSignondAuthSessionIface *session,
+ GSignondSessionData *session_data);
+
+ void (*refresh) (GSignondAuthSessionIface *session,
+ GSignondSessionData *session_data);
+
};
GType gsignond_auth_session_iface_get_type (void);
-gchar ** gsignond_auth_session_iface_query_available_mechanisms (
+gchar **
+gsignond_auth_session_iface_query_available_mechanisms (
GSignondAuthSessionIface *self,
const gchar **wanted_mechanisms);
-gboolean gsignond_auth_session_iface_process (GSignondAuthSessionIface *self,
- const GVariant *session_data,
+gboolean
+gsignond_auth_session_iface_process (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data,
const gchar *mechanism);
-void gsignond_auth_session_iface_cancel (GSignondAuthSessionIface *self);
-void gsignond_auth_session_iface_set_id (GSignondAuthSessionIface *self,
- guint32 id);
-
+void
+gsignond_auth_session_iface_cancel (GSignondAuthSessionIface *self);
+void
+gsignond_auth_session_iface_user_action_finished (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data);
+void
+gsignond_auth_session_iface_refresh (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data);
+
+
+/* handlers */
+/**
+ * process_reply:
+ * @session: instance of #GSignondAuthSessionIface
+ * @results: authentication process results
+ *
+ * Function to be called with #results on authentication process success.
+ */
void
gsignond_auth_session_iface_notify_process_result (
GSignondAuthSessionIface *iface,
- const GVariant *result);
+ GSignondSessionData *result);
+
+/**
+ * process_error:
+ * @session: instance of #GSignondAuthSessionIface
+ * @error: error of type #GError, occured during authentication process
+ *
+ * Function to be called with #error on authentication process failure.
+ */
void
gsignond_auth_session_iface_notify_process_error (
GSignondAuthSessionIface *iface,
const GError *error);
+void
+gsignond_auth_session_iface_notify_store (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data);
+void
+gsignond_auth_session_iface_notify_user_action_required (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data);
+void
+gsignond_auth_session_iface_notify_refreshed (GSignondAuthSessionIface *self,
+ GSignondSessionData *session_data);
+void
+gsignond_auth_session_iface_notify_status_changed (GSignondAuthSessionIface *self,
+ const gchar *status,
+ const gchar *message);
+
G_END_DECLS
#endif /* __GSIGNOND_AUTH_SESSION_IFACE_H_ */
}
static gboolean
-_process (GSignondAuthSessionIface *iface, const GVariant *session_data,
+_process (GSignondAuthSessionIface *iface, GSignondSessionData *session_data,
const gchar *mechanism)
{
GSignondAuthSession *self = GSIGNOND_AUTH_SESSION (iface);
}
static void
-_process_response (GSignondAuthSessionIface *iface, GVariant *response_data)
-{
- gsignond_auth_session_iface_notify_process_result (iface, response_data);
-}
-
-static void
_get_property (GObject *object, guint property_id, GValue *value,
GParamSpec *pspec)
{