From e7903a8033052751d3f9be20558dd29c3dcec738 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 17 Dec 2015 20:19:27 +0100 Subject: [PATCH] lib: Move fetch_metadata_sync from RemoteRef to Remote We want to make the Ref objects pure data storage --- lib/test-lib.c | 2 +- lib/xdg-app-remote-ref-private.h | 3 +-- lib/xdg-app-remote-ref.c | 30 +----------------------------- lib/xdg-app-remote-ref.h | 5 ----- lib/xdg-app-remote.c | 25 +++++++++++++++++++++++-- lib/xdg-app-remote.h | 5 +++++ 6 files changed, 31 insertions(+), 39 deletions(-) diff --git a/lib/test-lib.c b/lib/test-lib.c index 335351c4..cd5d49a3 100644 --- a/lib/test-lib.c +++ b/lib/test-lib.c @@ -216,7 +216,7 @@ main (int argc, char *argv[]) xdg_app_ref_get_commit (XDG_APP_REF(remote_ref)), xdg_app_remote_ref_get_remote_name (remote_ref)); - metadata = xdg_app_remote_ref_fetch_metadata_sync (remote_ref, NULL, &error); + metadata = xdg_app_remote_fetch_metadata_sync (remotes[i], xdg_app_ref_get_commit (XDG_APP_REF(remote_ref)), NULL, &error); if (metadata) { g_print ("metadata: %s\n", (char *)g_bytes_get_data (metadata, NULL)); diff --git a/lib/xdg-app-remote-ref-private.h b/lib/xdg-app-remote-ref-private.h index a6e36c4d..5017809c 100644 --- a/lib/xdg-app-remote-ref-private.h +++ b/lib/xdg-app-remote-ref-private.h @@ -30,7 +30,6 @@ XdgAppRemoteRef *xdg_app_remote_ref_new (const char *full_ref, const char *commit, - const char *remote_name, - XdgAppDir *dir); + const char *remote_name); #endif /* __XDG_APP_REMOTE_REF_PRIVATE_H__ */ diff --git a/lib/xdg-app-remote-ref.c b/lib/xdg-app-remote-ref.c index c175d6d3..d1bdc29e 100644 --- a/lib/xdg-app-remote-ref.c +++ b/lib/xdg-app-remote-ref.c @@ -32,7 +32,6 @@ typedef struct _XdgAppRemoteRefPrivate XdgAppRemoteRefPrivate; struct _XdgAppRemoteRefPrivate { char *remote_name; - XdgAppDir *dir; }; G_DEFINE_TYPE_WITH_PRIVATE (XdgAppRemoteRef, xdg_app_remote_ref, XDG_APP_TYPE_REF) @@ -50,7 +49,6 @@ xdg_app_remote_ref_finalize (GObject *object) XdgAppRemoteRefPrivate *priv = xdg_app_remote_ref_get_instance_private (self); g_free (priv->remote_name); - g_object_unref (priv->dir); G_OBJECT_CLASS (xdg_app_remote_ref_parent_class)->finalize (object); } @@ -130,37 +128,14 @@ xdg_app_remote_ref_get_remote_name (XdgAppRemoteRef *self) } -GBytes * -xdg_app_remote_ref_fetch_metadata_sync (XdgAppRemoteRef *self, - GCancellable *cancellable, - GError **error) -{ - XdgAppRemoteRefPrivate *priv = xdg_app_remote_ref_get_instance_private (self); - const char *commit; - g_autoptr(GBytes) bytes = NULL; - - commit = xdg_app_ref_get_commit (XDG_APP_REF (self)); - bytes = xdg_app_dir_fetch_metadata (priv->dir, - priv->remote_name, - commit, - cancellable, - error); - if (bytes == NULL) - return NULL; - - return g_steal_pointer (&bytes); -} - XdgAppRemoteRef * xdg_app_remote_ref_new (const char *full_ref, const char *commit, - const char *remote_name, - XdgAppDir *dir) + const char *remote_name) { XdgAppRefKind kind = XDG_APP_REF_KIND_APP; g_auto(GStrv) parts = NULL; XdgAppRemoteRef *ref; - XdgAppRemoteRefPrivate *priv; parts = g_strsplit (full_ref, "/", -1); @@ -176,8 +151,5 @@ xdg_app_remote_ref_new (const char *full_ref, "remote-name", remote_name, NULL); - priv = xdg_app_remote_ref_get_instance_private (ref); - priv->dir = g_object_ref (dir); - return ref; } diff --git a/lib/xdg-app-remote-ref.h b/lib/xdg-app-remote-ref.h index c7f97d58..f348005f 100644 --- a/lib/xdg-app-remote-ref.h +++ b/lib/xdg-app-remote-ref.h @@ -46,11 +46,6 @@ typedef struct { XDG_APP_EXTERN const char * xdg_app_remote_ref_get_remote_name (XdgAppRemoteRef *self); -XDG_APP_EXTERN GBytes *xdg_app_remote_ref_fetch_metadata_sync (XdgAppRemoteRef *self, - GCancellable *cancellable, - GError **error); - - #ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC G_DEFINE_AUTOPTR_CLEANUP_FUNC(XdgAppRemoteRef, g_object_unref) #endif diff --git a/lib/xdg-app-remote.c b/lib/xdg-app-remote.c index 99591a12..d51a15bd 100644 --- a/lib/xdg-app-remote.c +++ b/lib/xdg-app-remote.c @@ -171,6 +171,27 @@ xdg_app_remote_get_gpg_verify (XdgAppRemote *self) return FALSE; } +GBytes * +xdg_app_remote_fetch_metadata_sync (XdgAppRemote *self, + const char *commit, + GCancellable *cancellable, + GError **error) +{ + XdgAppRemotePrivate *priv = xdg_app_remote_get_instance_private (self); + g_autoptr(GBytes) bytes = NULL; + + bytes = xdg_app_dir_fetch_metadata (priv->dir, + priv->name, + commit, + cancellable, + error); + if (bytes == NULL) + return NULL; + + return g_steal_pointer (&bytes); +} + + /** * xdg_app_remote_list_refs_sync: * @self: a #XdgAppRemove @@ -208,7 +229,7 @@ xdg_app_remote_list_refs_sync (XdgAppRemote *self, const char *checksum = value; g_ptr_array_add (refs, - xdg_app_remote_ref_new (refspec, checksum, priv->name, priv->dir)); + xdg_app_remote_ref_new (refspec, checksum, priv->name)); } return g_steal_pointer (&refs); @@ -260,7 +281,7 @@ xdg_app_remote_fetch_ref_sync (XdgAppRemote *self, checksum = g_hash_table_lookup (ht, ref); if (checksum != NULL) - return xdg_app_remote_ref_new (ref, checksum, priv->name, priv->dir); + return xdg_app_remote_ref_new (ref, checksum, priv->name); g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND, "Reference %s doesn't exist in remote\n", ref); diff --git a/lib/xdg-app-remote.h b/lib/xdg-app-remote.h index 4af9d24c..840cf7de 100644 --- a/lib/xdg-app-remote.h +++ b/lib/xdg-app-remote.h @@ -54,6 +54,11 @@ XDG_APP_EXTERN char * xdg_app_remote_get_title (XdgAppRemote *self); XDG_APP_EXTERN gboolean xdg_app_remote_get_gpg_verify (XdgAppRemote *self); XDG_APP_EXTERN gboolean xdg_app_remote_get_noenumerate (XdgAppRemote *self); +XDG_APP_EXTERN GBytes *xdg_app_remote_fetch_metadata_sync (XdgAppRemote *self, + const char *commit, + GCancellable *cancellable, + GError **error); + XDG_APP_EXTERN GPtrArray *xdg_app_remote_list_refs_sync (XdgAppRemote *self, GCancellable *cancellable, GError **error);