uridownloader: Add refresh parameter to hint caches that they should check if they're up to date

This commit is contained in:
Sebastian Dröge 2014-05-02 10:36:21 +02:00
parent dfc6745143
commit aa875604c9
2 changed files with 21 additions and 34 deletions

View file

@ -323,7 +323,7 @@ gst_uri_downloader_set_range (GstUriDownloader * downloader,
static gboolean
gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
const gchar * referer, gboolean compress)
const gchar * referer, gboolean compress, gboolean refresh)
{
GstPad *pad;
GObjectClass *gobject_class;
@ -379,10 +379,15 @@ gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
if (g_object_class_find_property (gobject_class, "keep-alive"))
g_object_set (downloader->priv->urisrc, "keep-alive", TRUE, NULL);
if (g_object_class_find_property (gobject_class, "extra-headers")) {
if (referer) {
GstStructure *extra_headers =
gst_structure_new ("headers", "Referer", G_TYPE_STRING, referer,
NULL);
if (referer || refresh) {
GstStructure *extra_headers = gst_structure_new_empty ("headers");
if (referer)
gst_structure_set (extra_headers, "Referer", G_TYPE_STRING, referer,
NULL);
if (refresh)
gst_structure_set (extra_headers, "Cache-Control", G_TYPE_STRING,
"max-age=0", NULL);
g_object_set (downloader->priv->urisrc, "extra-headers", extra_headers,
NULL);
@ -408,32 +413,16 @@ gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
}
GstFragment *
gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri,
gboolean compress, GError ** err)
gst_uri_downloader_fetch_uri (GstUriDownloader * downloader,
const gchar * uri, const gchar * referer, gboolean compress,
gboolean refresh, GError ** err)
{
return gst_uri_downloader_fetch_uri_with_range_and_referer (downloader, uri,
NULL, compress, 0, -1, err);
}
GstFragment *
gst_uri_downloader_fetch_uri_with_referer (GstUriDownloader * downloader,
const gchar * uri, const gchar * referer, gboolean compress, GError ** err)
{
return gst_uri_downloader_fetch_uri_with_range_and_referer (downloader, uri,
referer, compress, 0, -1, err);
}
GstFragment *
gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader,
const gchar * uri, gboolean compress, gint64 range_start, gint64 range_end,
GError ** err)
{
return gst_uri_downloader_fetch_uri_with_range_and_referer (downloader, uri,
NULL, compress, range_start, range_end, err);
return gst_uri_downloader_fetch_uri_with_range (downloader, uri,
referer, compress, refresh, 0, -1, err);
}
/**
* gst_uri_downloader_fetch_uri_with_range_and_referer:
* gst_uri_downloader_fetch_uri_with_range:
* @downloader: the #GstUriDownloader
* @uri: the uri
* @range_start: the starting byte index
@ -442,9 +431,9 @@ gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader,
* Returns the downloaded #GstFragment
*/
GstFragment *
gst_uri_downloader_fetch_uri_with_range_and_referer (GstUriDownloader *
gst_uri_downloader_fetch_uri_with_range (GstUriDownloader *
downloader, const gchar * uri, const gchar * referer, gboolean compress,
gint64 range_start, gint64 range_end, GError ** err)
gboolean refresh, gint64 range_start, gint64 range_end, GError ** err)
{
GstStateChangeReturn ret;
GstFragment *download = NULL;
@ -461,7 +450,7 @@ gst_uri_downloader_fetch_uri_with_range_and_referer (GstUriDownloader *
goto quit;
}
if (!gst_uri_downloader_set_uri (downloader, uri, referer, compress)) {
if (!gst_uri_downloader_set_uri (downloader, uri, referer, compress, refresh)) {
GST_WARNING_OBJECT (downloader, "Failed to set URI");
goto quit;
}

View file

@ -56,10 +56,8 @@ struct _GstUriDownloaderClass
GType gst_uri_downloader_get_type (void);
GstUriDownloader * gst_uri_downloader_new (void);
GstFragment * gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri, gboolean compress, GError ** err);
GstFragment * gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader, const gchar * uri, gboolean compress, gint64 range_start, gint64 range_end, GError ** err);
GstFragment * gst_uri_downloader_fetch_uri_with_referer (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, GError ** err);
GstFragment * gst_uri_downloader_fetch_uri_with_range_and_referer (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, gint64 range_start, gint64 range_end, GError ** err);
GstFragment * gst_uri_downloader_fetch_uri (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, gboolean refresh, GError ** err);
GstFragment * gst_uri_downloader_fetch_uri_with_range (GstUriDownloader * downloader, const gchar * uri, const gchar * referer, gboolean compress, gboolean refresh, gint64 range_start, gint64 range_end, GError ** err);
void gst_uri_downloader_reset (GstUriDownloader *downloader);
void gst_uri_downloader_cancel (GstUriDownloader *downloader);
void gst_uri_downloader_free (GstUriDownloader *downloader);