[gvfs] afp: move map_id function to GVfsAfpServer



commit 319c19830c49f8b4c10f40f763db95fe402e38cb
Author: Carl-Anton Ingmarsson <ca ingmarsson gmail com>
Date:   Sun Apr 22 22:12:19 2012 +0200

    afp: move map_id function to GVfsAfpServer
    
    also rename the AfpMapIDFunction enum to GVfsAfpMapIDFunction and move it into
    gvfsafpserver.h.

 daemon/gvfsafpconnection.h |   10 ---
 daemon/gvfsafpserver.c     |  175 ++++++++++++++++++++++++++++++++++++++++++++
 daemon/gvfsafpserver.h     |   23 ++++++
 daemon/gvfsafpvolume.c     |  175 --------------------------------------------
 daemon/gvfsafpvolume.h     |   12 ---
 daemon/gvfsbackendafp.c    |   24 +++---
 6 files changed, 210 insertions(+), 209 deletions(-)
---
diff --git a/daemon/gvfsafpconnection.h b/daemon/gvfsafpconnection.h
index 5637ed9..a524447 100644
--- a/daemon/gvfsafpconnection.h
+++ b/daemon/gvfsafpconnection.h
@@ -36,16 +36,6 @@ enum
   AFP_GET_USER_INFO_BITMAP_GET_UUID_BIT = 0x4
 };
 
-typedef enum
-{
-  AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME         = 1,
-  AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME        = 2,
-  AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME    = 3,
-  AFP_MAP_ID_FUNCTION_GROUP_ID_TO_UTF8_NAME   = 4,
-  AFP_MAP_ID_FUNCTION_USER_UUID_TO_UTF8_NAME  = 5,
-  AFP_MAP_ID_FUNCTION_GROUP_UUID_TO_UTF8_NAME = 6
-} AfpMapIDFunction;
-
 enum
 {
   AFP_MAP_NAME_FUNCTION_NAME_TO_USER_ID         = 1,
diff --git a/daemon/gvfsafpserver.c b/daemon/gvfsafpserver.c
index 7431040..5b0e248 100644
--- a/daemon/gvfsafpserver.c
+++ b/daemon/gvfsafpserver.c
@@ -1559,4 +1559,179 @@ g_vfs_afp_server_fill_info (GVfsAfpServer *server,
     else
       set_access_attributes (info, (permissions >> 0) & 0x7);
   }
+}
+
+typedef struct
+{
+  GVfsAfpMapIDFunction function;
+  char *name;
+} MapIDData;
+
+static void
+map_id_data_free (MapIDData *mid)
+{
+  g_free (mid->name);
+
+  g_slice_free (MapIDData, mid);
+}
+
+static void
+map_id_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+  GVfsAfpConnection *conn = G_VFS_AFP_CONNECTION (source_object);
+  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (user_data);
+
+  GVfsAfpReply *reply;
+  GError *err = NULL;
+
+  AfpResultCode res_code;
+  MapIDData *map_data;
+
+  reply = g_vfs_afp_connection_send_command_finish (conn, res, &err);
+  if (!reply)
+  {
+    g_simple_async_result_take_error (simple, err);
+    g_simple_async_result_complete (simple);
+    return;
+  }
+
+  res_code = g_vfs_afp_reply_get_result_code (reply);
+  if (res_code != AFP_RESULT_NO_ERROR)
+  {
+    switch (res_code)
+    {
+      case AFP_RESULT_ITEM_NOT_FOUND:
+        g_simple_async_result_set_error (simple, G_IO_ERROR, G_IO_ERROR_FAILED,
+                                         _("ID not found"));
+        break;
+      default:
+        g_simple_async_result_take_error (simple, afp_result_code_to_gerror (res_code));
+        break;
+    }
+
+    g_simple_async_result_complete (simple);
+    return;
+  }
+
+  map_data = g_simple_async_result_get_op_res_gpointer (simple);
+  
+  if (map_data->function == GVFS_AFP_MAP_ID_FUNCTION_USER_UUID_TO_UTF8_NAME ||
+      map_data->function == GVFS_AFP_MAP_ID_FUNCTION_GROUP_UUID_TO_UTF8_NAME)
+  {
+    /* objType */
+    g_vfs_afp_reply_read_uint32 (reply, NULL);
+    /* id */
+    g_vfs_afp_reply_read_uint32 (reply, NULL);
+  }
+
+  if (map_data->function == GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME ||
+      map_data->function == GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME)
+  {
+    g_vfs_afp_reply_read_pascal (reply, &map_data->name);
+  }
+  else
+  {
+    GVfsAfpName *afp_name;
+
+    g_vfs_afp_reply_read_afp_name (reply, FALSE, &afp_name);
+    map_data->name = g_vfs_afp_name_get_string (afp_name);
+    g_vfs_afp_name_unref (afp_name);
+  }
+
+  g_simple_async_result_complete (simple);
+}
+
+/*
+ * g_vfs_afp_server_map_id:
+ * 
+ * @server: a #GVfsAfpServer.
+ * @map_function: a #GVfsAfpMapIDFunction.
+ * @id: the id to be mapped to a name.
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @callback: callback to call when the request is satisfied.
+ * @user_data: the data to pass to callback function.
+ * 
+ * Asynchronously maps a user id, group id or uuid to a name.
+ */
+void
+g_vfs_afp_server_map_id (GVfsAfpServer       *server,
+                         GVfsAfpMapIDFunction map_function,
+                         gint64               id,
+                         GCancellable        *cancellable,
+                         GAsyncReadyCallback  callback,
+                         gpointer             user_data)
+{
+  GVfsAfpServerPrivate *priv;
+  GVfsAfpCommand *comm;
+  GSimpleAsyncResult *simple;
+  MapIDData *map_data;
+
+  g_return_if_fail (G_VFS_IS_AFP_SERVER (server));
+
+  priv = server->priv;
+  
+  comm = g_vfs_afp_command_new (AFP_COMMAND_MAP_ID);
+
+  /* SubFunction*/
+  g_vfs_afp_command_put_byte (comm, map_function);
+
+  /* ID */
+  if (map_function == GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME ||
+      map_function == GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME)
+    g_vfs_afp_command_put_int32 (comm, id);
+  else
+    g_vfs_afp_command_put_int64 (comm, id);
+
+  simple = g_simple_async_result_new (G_OBJECT (server), callback,
+                                      user_data, g_vfs_afp_server_map_id);
+
+  map_data = g_slice_new0 (MapIDData);
+  map_data->function = map_function;
+  g_simple_async_result_set_op_res_gpointer (simple, map_data,
+                                             (GDestroyNotify)map_id_data_free);
+  
+  g_vfs_afp_connection_send_command (priv->conn, comm, NULL,
+                                     map_id_cb, cancellable, simple);
+  g_object_unref (comm);
+}
+
+/*
+ * g_vfs_afp_server_map_id_finish:
+ * 
+ * @server: a #GVfsAfpServer.
+ * @result: a #GAsyncResult.
+ * @map_function: (out) optional out parameter to get the #GVfsAfpMapIDFunction
+ * which was used, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
+ * 
+ * Finalizes the asynchronous operation started by
+ * g_vfs_afp_server_map_id.
+ * 
+ * Returns: (transfer full): A string with the name of the id or %NULL
+ * on error.
+ */
+char *
+g_vfs_afp_server_map_id_finish (GVfsAfpServer        *server,
+                                GAsyncResult         *res,
+                                GVfsAfpMapIDFunction *map_function,
+                                GError              **error)
+{
+  GSimpleAsyncResult *simple;
+  MapIDData *map_data;
+
+  g_return_val_if_fail (g_simple_async_result_is_valid (res, G_OBJECT (server),
+                                                        g_vfs_afp_server_map_id),
+                        NULL);
+
+  simple = (GSimpleAsyncResult *)res;
+
+  if (g_simple_async_result_propagate_error (simple, error))
+    return NULL;
+
+  map_data = g_simple_async_result_get_op_res_gpointer (simple);
+
+  if (map_function)
+    *map_function = map_data->function;
+  
+  return g_strdup (map_data->name);
 }
\ No newline at end of file
diff --git a/daemon/gvfsafpserver.h b/daemon/gvfsafpserver.h
index 46e7368..84272db 100644
--- a/daemon/gvfsafpserver.h
+++ b/daemon/gvfsafpserver.h
@@ -120,6 +120,29 @@ void               g_vfs_afp_server_fill_info         (GVfsAfpServer *server,
                                                        gboolean       directory,
                                                        guint16        bitmap);
 
+
+typedef enum
+{
+  GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME         = 1,
+  GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME        = 2,
+  GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME    = 3,
+  GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_UTF8_NAME   = 4,
+  GVFS_AFP_MAP_ID_FUNCTION_USER_UUID_TO_UTF8_NAME  = 5,
+  GVFS_AFP_MAP_ID_FUNCTION_GROUP_UUID_TO_UTF8_NAME = 6
+} GVfsAfpMapIDFunction;
+
+void          g_vfs_afp_server_map_id                 (GVfsAfpServer       *server,
+                                                       GVfsAfpMapIDFunction map_function,
+                                                       gint64               id,
+                                                       GCancellable        *cancellable,
+                                                       GAsyncReadyCallback  callback,
+                                                       gpointer             user_data);
+
+char *        g_vfs_afp_server_map_id_finish          (GVfsAfpServer        *server,
+                                                       GAsyncResult         *res,
+                                                       GVfsAfpMapIDFunction *map_function,
+                                                       GError              **error);
+
 G_END_DECLS
 
 #endif /* _GVFSAFPSERVER_H_ */
diff --git a/daemon/gvfsafpvolume.c b/daemon/gvfsafpvolume.c
index 2e5e7c1..2ec48dc 100644
--- a/daemon/gvfsafpvolume.c
+++ b/daemon/gvfsafpvolume.c
@@ -1679,181 +1679,6 @@ g_vfs_afp_volume_copy_file_finish (GVfsAfpVolume *volume,
   return TRUE;
 }
 
-typedef struct
-{
-  AfpMapIDFunction function;
-  char *name;
-} MapIDData;
-
-static void
-map_id_data_free (MapIDData *mid)
-{
-  g_free (mid->name);
-
-  g_slice_free (MapIDData, mid);
-}
-
-static void
-map_id_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
-{
-  GVfsAfpConnection *conn = G_VFS_AFP_CONNECTION (source_object);
-  GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (user_data);
-
-  GVfsAfpReply *reply;
-  GError *err = NULL;
-
-  AfpResultCode res_code;
-  MapIDData *map_data;
-
-  reply = g_vfs_afp_connection_send_command_finish (conn, res, &err);
-  if (!reply)
-  {
-    g_simple_async_result_take_error (simple, err);
-    g_simple_async_result_complete (simple);
-    return;
-  }
-
-  res_code = g_vfs_afp_reply_get_result_code (reply);
-  if (res_code != AFP_RESULT_NO_ERROR)
-  {
-    switch (res_code)
-    {
-      case AFP_RESULT_ITEM_NOT_FOUND:
-        g_simple_async_result_set_error (simple, G_IO_ERROR, G_IO_ERROR_FAILED,
-                                         _("ID not found"));
-        break;
-      default:
-        g_simple_async_result_take_error (simple, afp_result_code_to_gerror (res_code));
-        break;
-    }
-
-    g_simple_async_result_complete (simple);
-    return;
-  }
-
-  map_data = g_simple_async_result_get_op_res_gpointer (simple);
-  
-  if (map_data->function == AFP_MAP_ID_FUNCTION_USER_UUID_TO_UTF8_NAME ||
-      map_data->function == AFP_MAP_ID_FUNCTION_GROUP_UUID_TO_UTF8_NAME)
-  {
-    /* objType */
-    g_vfs_afp_reply_read_uint32 (reply, NULL);
-    /* id */
-    g_vfs_afp_reply_read_uint32 (reply, NULL);
-  }
-
-  if (map_data->function == AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME ||
-      map_data->function == AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME)
-  {
-    g_vfs_afp_reply_read_pascal (reply, &map_data->name);
-  }
-  else
-  {
-    GVfsAfpName *afp_name;
-
-    g_vfs_afp_reply_read_afp_name (reply, FALSE, &afp_name);
-    map_data->name = g_vfs_afp_name_get_string (afp_name);
-    g_vfs_afp_name_unref (afp_name);
-  }
-
-  g_simple_async_result_complete (simple);
-}
-
-/*
- * g_vfs_afp_volume_map_id:
- * 
- * @volume: a #GVfsAfpVolume.
- * @map_function: a #AfpMapIDFunction.
- * @id: the id to be mapped to a name.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: callback to call when the request is satisfied.
- * @user_data: the data to pass to callback function.
- * 
- * Asynchronously maps a user id, group id or uuid to a name.
- */
-void
-g_vfs_afp_volume_map_id (GVfsAfpVolume       *volume,
-                         AfpMapIDFunction     map_function,
-                         gint64               id,
-                         GCancellable        *cancellable,
-                         GAsyncReadyCallback  callback,
-                         gpointer             user_data)
-{
-  GVfsAfpVolumePrivate *priv;
-  GVfsAfpCommand *comm;
-  GSimpleAsyncResult *simple;
-  MapIDData *map_data;
-
-  g_return_if_fail (G_VFS_IS_AFP_VOLUME (volume));
-
-  priv = volume->priv;
-  
-  comm = g_vfs_afp_command_new (AFP_COMMAND_MAP_ID);
-
-  /* SubFunction*/
-  g_vfs_afp_command_put_byte (comm, map_function);
-
-  /* ID */
-  if (map_function == AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME ||
-      map_function == AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME)
-    g_vfs_afp_command_put_int32 (comm, id);
-  else
-    g_vfs_afp_command_put_int64 (comm, id);
-
-  simple = g_simple_async_result_new (G_OBJECT (volume), callback,
-                                      user_data, g_vfs_afp_volume_map_id);
-
-  map_data = g_slice_new0 (MapIDData);
-  map_data->function = map_function;
-  g_simple_async_result_set_op_res_gpointer (simple, map_data,
-                                             (GDestroyNotify)map_id_data_free);
-  
-  g_vfs_afp_connection_send_command (priv->conn, comm, NULL,
-                                     map_id_cb, cancellable, simple);
-  g_object_unref (comm);
-}
-
-/*
- * g_vfs_afp_volume_map_id_finish:
- * 
- * @volume: a #GVfsAfpVolume.
- * @result: a #GAsyncResult.
- * @map_function: (out) optional out parameter to get the #AfpMapIDFunction
- * which was used, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
- * 
- * Finalizes the asynchronous operation started by
- * g_vfs_afp_volume_map_id.
- * 
- * Returns: (transfer full): A string with the name of the id or %NULL
- * on error.
- */
-char *
-g_vfs_afp_volume_map_id_finish (GVfsAfpVolume   *volume,
-                                GAsyncResult     *res,
-                                AfpMapIDFunction *map_function,
-                                GError          **error)
-{
-  GSimpleAsyncResult *simple;
-  MapIDData *map_data;
-
-  g_return_val_if_fail (g_simple_async_result_is_valid (res, G_OBJECT (volume),
-                                                        g_vfs_afp_volume_map_id),
-                        NULL);
-
-  simple = (GSimpleAsyncResult *)res;
-
-  if (g_simple_async_result_propagate_error (simple, error))
-    return NULL;
-
-  map_data = g_simple_async_result_get_op_res_gpointer (simple);
-
-  if (map_function)
-    *map_function = map_data->function;
-  
-  return g_strdup (map_data->name);
-}
-
 static void
 get_filedir_parms_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
 {
diff --git a/daemon/gvfsafpvolume.h b/daemon/gvfsafpvolume.h
index 6325e96..bca354a 100644
--- a/daemon/gvfsafpvolume.h
+++ b/daemon/gvfsafpvolume.h
@@ -160,18 +160,6 @@ gboolean     g_vfs_afp_volume_move_and_rename_finish (GVfsAfpVolume  *volume,
                                                       GAsyncResult   *res,
                                                       GError        **error);
 
-void          g_vfs_afp_volume_map_id              (GVfsAfpVolume       *volume,
-                                                    AfpMapIDFunction     map_function,
-                                                    gint64               id,
-                                                    GCancellable        *cancellable,
-                                                    GAsyncReadyCallback  callback,
-                                                    gpointer             user_data);
-
-char *        g_vfs_afp_volume_map_id_finish       (GVfsAfpVolume   *volume,
-                                                    GAsyncResult     *res,
-                                                    AfpMapIDFunction *map_function,
-                                                    GError          **error);
-
 void          g_vfs_afp_volume_get_filedir_parms   (GVfsAfpVolume       *volume,
                                                     const char          *filename,
                                                     guint16              file_bitmap,
diff --git a/daemon/gvfsbackendafp.c b/daemon/gvfsbackendafp.c
index 0727486..4fc5628 100644
--- a/daemon/gvfsbackendafp.c
+++ b/daemon/gvfsbackendafp.c
@@ -1822,27 +1822,27 @@ try_query_fs_info (GVfsBackend *backend,
 static void
 get_name_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
 {
-  GVfsAfpVolume *volume = G_VFS_AFP_VOLUME (source_object);
+  GVfsAfpServer *server = G_VFS_AFP_SERVER (source_object);
   GVfsJobQueryInfo *job = G_VFS_JOB_QUERY_INFO (user_data);
 
   char *name;
-  AfpMapIDFunction map_function;
+  GVfsAfpMapIDFunction map_function;
   guint outstanding_requests;
 
-  name = g_vfs_afp_volume_map_id_finish (volume, res, &map_function, NULL);
+  name = g_vfs_afp_server_map_id_finish (server, res, &map_function, NULL);
   if (name)
   {
     switch (map_function)
     {
-      case AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME:
+      case GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME:
         g_file_info_set_attribute_string (job->file_info, G_FILE_ATTRIBUTE_OWNER_USER,
                                           name);
         break;
-      case AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME:
+      case GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME:
         g_file_info_set_attribute_string (job->file_info, G_FILE_ATTRIBUTE_OWNER_USER_REAL,
                                           name);
         break;
-      case AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME:
+      case GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME:
         g_file_info_set_attribute_string (job->file_info, G_FILE_ATTRIBUTE_OWNER_GROUP,
                                           name);
         break;
@@ -1908,16 +1908,16 @@ query_info_get_filedir_parms_cb (GObject *source_object, GAsyncResult *res, gpoi
 
     if (g_file_attribute_matcher_matches (matcher, G_FILE_ATTRIBUTE_OWNER_USER))
     {
-      g_vfs_afp_volume_map_id (volume,
-                               AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME, uid,
+      g_vfs_afp_server_map_id (afp_backend->server,
+                               GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME, uid,
                                G_VFS_JOB (job)->cancellable, get_name_cb, job);
       outstanding_requests++;
     }
     
     if (g_file_attribute_matcher_matches (matcher, G_FILE_ATTRIBUTE_OWNER_USER_REAL))
     {
-      g_vfs_afp_volume_map_id (volume,
-                               AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME, uid,
+      g_vfs_afp_server_map_id (afp_backend->server,
+                               GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME, uid,
                                G_VFS_JOB (job)->cancellable, get_name_cb, job);
       outstanding_requests++;
     }
@@ -1930,8 +1930,8 @@ query_info_get_filedir_parms_cb (GObject *source_object, GAsyncResult *res, gpoi
 
     gid = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_GID);
 
-    g_vfs_afp_volume_map_id (volume,
-                             AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME, gid,
+    g_vfs_afp_server_map_id (afp_backend->server,
+                             GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME, gid,
                              G_VFS_JOB (job)->cancellable, get_name_cb, job);
     outstanding_requests++;
   }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]