metalink: have a single entry to the metalink module
Replace _ostree_metalink_request_async with a synchronous version. Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
parent
d5d73debd8
commit
c832e9b751
|
|
@ -658,33 +658,21 @@ static const GMarkupParser metalink_parser = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
typedef struct
|
||||||
_ostree_metalink_request_async (OstreeMetalink *self,
|
|
||||||
GCancellable *cancellable,
|
|
||||||
GAsyncReadyCallback callback,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
{
|
||||||
GTask *task = g_task_new (self, cancellable, callback, user_data);
|
SoupURI **out_target_uri;
|
||||||
OstreeMetalinkRequest *request = g_new0 (OstreeMetalinkRequest, 1);
|
GFile **out_data;
|
||||||
|
gboolean success;
|
||||||
|
GError **error;
|
||||||
|
GMainLoop *loop;
|
||||||
|
} FetchMetalinkSyncData;
|
||||||
|
|
||||||
request->metalink = g_object_ref (self);
|
static gboolean
|
||||||
request->urls = g_ptr_array_new_with_free_func ((GDestroyNotify) soup_uri_free);
|
ostree_metalink_request_finish (OstreeMetalink *self,
|
||||||
request->task = task; /* Unowned */
|
GAsyncResult *result,
|
||||||
|
SoupURI **out_target_uri,
|
||||||
request->parser = g_markup_parse_context_new (&metalink_parser, G_MARKUP_PREFIX_ERROR_POSITION, task, NULL);
|
GFile **out_data,
|
||||||
|
GError **error)
|
||||||
g_task_set_task_data (task, request, ostree_metalink_request_unref);
|
|
||||||
_ostree_fetcher_stream_uri_async (self->fetcher, self->uri,
|
|
||||||
self->max_size, cancellable,
|
|
||||||
on_retrieved_metalink, task);
|
|
||||||
}
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
_ostree_metalink_request_finish (OstreeMetalink *self,
|
|
||||||
GAsyncResult *result,
|
|
||||||
SoupURI **out_target_uri,
|
|
||||||
GFile **out_data,
|
|
||||||
GError **error)
|
|
||||||
{
|
{
|
||||||
OstreeMetalinkRequest *request;
|
OstreeMetalinkRequest *request;
|
||||||
|
|
||||||
|
|
@ -703,6 +691,54 @@ _ostree_metalink_request_finish (OstreeMetalink *self,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_metalink_fetched (GObject *src,
|
||||||
|
GAsyncResult *result,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
FetchMetalinkSyncData *data = user_data;
|
||||||
|
|
||||||
|
data->success = ostree_metalink_request_finish ((OstreeMetalink*)src,
|
||||||
|
result,
|
||||||
|
data->out_target_uri,
|
||||||
|
data->out_data,
|
||||||
|
data->error);
|
||||||
|
g_main_loop_quit (data->loop);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
_ostree_metalink_request_sync (OstreeMetalink *self,
|
||||||
|
GMainLoop *loop,
|
||||||
|
SoupURI **out_target_uri,
|
||||||
|
GFile **out_data,
|
||||||
|
SoupURI **fetching_sync_uri,
|
||||||
|
GCancellable *cancellable,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
OstreeMetalinkRequest *request = g_new0 (OstreeMetalinkRequest, 1);
|
||||||
|
FetchMetalinkSyncData data = { 0, };
|
||||||
|
GTask *task = g_task_new (self, cancellable, on_metalink_fetched, &data);
|
||||||
|
|
||||||
|
data.out_target_uri = out_target_uri;
|
||||||
|
data.out_data = out_data;
|
||||||
|
data.loop = loop;
|
||||||
|
data.error = error;
|
||||||
|
*fetching_sync_uri = _ostree_metalink_get_uri (self);
|
||||||
|
|
||||||
|
request->metalink = g_object_ref (self);
|
||||||
|
request->urls = g_ptr_array_new_with_free_func ((GDestroyNotify) soup_uri_free);
|
||||||
|
request->task = task; /* Unowned */
|
||||||
|
|
||||||
|
request->parser = g_markup_parse_context_new (&metalink_parser, G_MARKUP_PREFIX_ERROR_POSITION, task, NULL);
|
||||||
|
|
||||||
|
g_task_set_task_data (task, request, ostree_metalink_request_unref);
|
||||||
|
_ostree_fetcher_stream_uri_async (self->fetcher, self->uri,
|
||||||
|
self->max_size, cancellable,
|
||||||
|
on_retrieved_metalink, task);
|
||||||
|
g_main_loop_run (loop);
|
||||||
|
return data.success;
|
||||||
|
}
|
||||||
|
|
||||||
SoupURI *
|
SoupURI *
|
||||||
_ostree_metalink_get_uri (OstreeMetalink *self)
|
_ostree_metalink_get_uri (OstreeMetalink *self)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -50,17 +50,13 @@ OstreeMetalink *_ostree_metalink_new (OstreeFetcher *fetcher,
|
||||||
|
|
||||||
SoupURI *_ostree_metalink_get_uri (OstreeMetalink *self);
|
SoupURI *_ostree_metalink_get_uri (OstreeMetalink *self);
|
||||||
|
|
||||||
void _ostree_metalink_request_async (OstreeMetalink *self,
|
gboolean _ostree_metalink_request_sync (OstreeMetalink *self,
|
||||||
GCancellable *cancellable,
|
GMainLoop *loop,
|
||||||
GAsyncReadyCallback callback,
|
SoupURI **out_target_uri,
|
||||||
gpointer user_data);
|
GFile **out_data,
|
||||||
|
SoupURI **fetching_sync_uri,
|
||||||
gboolean _ostree_metalink_request_finish (OstreeMetalink *self,
|
GCancellable *cancellable,
|
||||||
GAsyncResult *result,
|
GError **error);
|
||||||
SoupURI **out_target_uri,
|
|
||||||
GFile **out_data,
|
|
||||||
GError **error);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -303,49 +303,6 @@ fetch_uri_contents_utf8_sync (OtPullData *pull_data,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
OtPullData *pull_data;
|
|
||||||
SoupURI **out_target_uri;
|
|
||||||
GFile **out_data;
|
|
||||||
gboolean success;
|
|
||||||
} FetchMetalinkSyncData;
|
|
||||||
|
|
||||||
static void
|
|
||||||
on_metalink_fetched (GObject *src,
|
|
||||||
GAsyncResult *result,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
FetchMetalinkSyncData *data = user_data;
|
|
||||||
|
|
||||||
data->success = _ostree_metalink_request_finish ((OstreeMetalink*)src, result,
|
|
||||||
data->out_target_uri, data->out_data,
|
|
||||||
data->pull_data->async_error);
|
|
||||||
g_main_loop_quit (data->pull_data->loop);
|
|
||||||
}
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
request_metalink_sync (OtPullData *pull_data,
|
|
||||||
OstreeMetalink *metalink,
|
|
||||||
SoupURI **out_target_uri,
|
|
||||||
GFile **out_data,
|
|
||||||
GCancellable *cancellable,
|
|
||||||
GError **error)
|
|
||||||
{
|
|
||||||
FetchMetalinkSyncData data = { 0, };
|
|
||||||
|
|
||||||
data.pull_data = pull_data;
|
|
||||||
data.out_target_uri = out_target_uri;
|
|
||||||
data.out_data = out_data;
|
|
||||||
|
|
||||||
pull_data->fetching_sync_uri = _ostree_metalink_get_uri (metalink);
|
|
||||||
_ostree_metalink_request_async (metalink, cancellable, on_metalink_fetched, &data);
|
|
||||||
|
|
||||||
g_main_loop_run (pull_data->loop);
|
|
||||||
|
|
||||||
return data.success;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
enqueue_one_object_request (OtPullData *pull_data,
|
enqueue_one_object_request (OtPullData *pull_data,
|
||||||
const char *checksum,
|
const char *checksum,
|
||||||
|
|
@ -1387,8 +1344,13 @@ ostree_repo_pull_with_options (OstreeRepo *self,
|
||||||
OSTREE_MAX_METADATA_SIZE, metalink_uri);
|
OSTREE_MAX_METADATA_SIZE, metalink_uri);
|
||||||
soup_uri_free (metalink_uri);
|
soup_uri_free (metalink_uri);
|
||||||
|
|
||||||
if (!request_metalink_sync (pull_data, metalink, &target_uri, &metalink_data,
|
if (! _ostree_metalink_request_sync (metalink,
|
||||||
cancellable, error))
|
pull_data->loop,
|
||||||
|
&target_uri,
|
||||||
|
&metalink_data,
|
||||||
|
&pull_data->fetching_sync_uri,
|
||||||
|
cancellable,
|
||||||
|
error))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue