Add missing bits to AuthSessionIface
authorAlexander Kanavin <alexander.kanavin@intel.com>
Thu, 7 Feb 2013 15:43:10 +0000 (17:43 +0200)
committerAlexander Kanavin <alexander.kanavin@intel.com>
Mon, 11 Feb 2013 13:50:49 +0000 (15:50 +0200)
src/daemon/dbus/gsignond-dbus-auth-session-adapter.c
src/daemon/gsignond-auth-session-iface.c
src/daemon/gsignond-auth-session-iface.h
src/daemon/gsignond-auth-session.c

index 39874ba..5619800 100644 (file)
@@ -206,8 +206,9 @@ typedef struct {
     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);
@@ -217,6 +218,7 @@ _on_process_result (GSignondAuthSessionIface *auth_session, const GVariant *resu
     g_free (info);
 }
 
+//FIXME: needs to take GError instead of guint
 static void
 _on_process_error (GSignondAuthSessionIface *auth_session, guint error, gpointer user_data)
 {
@@ -237,14 +239,15 @@ _handle_process (GSignondDbusAuthSessionAdapter *self,
 {
     _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
index 67d355f..4fab1f5 100644 (file)
 
 #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.
@@ -86,7 +61,7 @@ gsignond_auth_session_iface_default_init (
             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),
@@ -98,6 +73,53 @@ gsignond_auth_session_iface_default_init (
             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 **
@@ -111,7 +133,7 @@ gsignond_auth_session_iface_query_available_mechanisms (
 
 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)->
@@ -124,10 +146,26 @@ gsignond_auth_session_iface_cancel (GSignondAuthSessionIface *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);
 }
@@ -139,3 +177,34 @@ gsignond_auth_session_iface_notify_process_error (
 {
     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);
+}
index 3d1c327..da9a35d 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <glib.h>
 #include <glib-object.h>
+#include <gsignond/gsignond-session-data.h>
 
 G_BEGIN_DECLS
 
@@ -63,13 +64,13 @@ struct _GSignondAuthSessionIfaceInterface {
      * @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);
 
     /**
@@ -79,49 +80,73 @@ struct _GSignondAuthSessionIfaceInterface {
      */
     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_ */
index 30c8bd4..d0fde77 100644 (file)
@@ -64,7 +64,7 @@ _query_available_mechanisms (GSignondAuthSessionIface *iface,
 }
 
 static gboolean
-_process (GSignondAuthSessionIface *iface, const GVariant *session_data,
+_process (GSignondAuthSessionIface *iface, GSignondSessionData *session_data,
           const gchar *mechanism)
 {
     GSignondAuthSession *self = GSIGNOND_AUTH_SESSION (iface);
@@ -82,12 +82,6 @@ _process (GSignondAuthSessionIface *iface, const GVariant *session_data,
 }
 
 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)
 {