| /* HTTP source element for use in tests |
| * |
| * Copyright (c) <2015> YouView TV Ltd |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Library General Public |
| * License as published by the Free Software Foundation; either |
| * version 2 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Library General Public License for more details. |
| * |
| * You should have received a copy of the GNU Library General Public |
| * License along with this library; if not, write to the |
| * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, |
| * Boston, MA 02110-1301, USA. |
| */ |
| |
| #ifndef __GST_TEST_HTTP_SRC_H__ |
| #define __GST_TEST_HTTP_SRC_H__ |
| |
| #include <gst/gst.h> |
| |
| G_BEGIN_DECLS |
| |
| #define GST_TYPE_TEST_HTTP_SRC (gst_test_http_src_get_type ()) |
| |
| /** |
| * TEST_HTTP_SRC_REQUEST_HEADERS_NAME: |
| * The name of the #GstStructure that will contain all the HTTP request |
| * headers |
| */ |
| #define TEST_HTTP_SRC_REQUEST_HEADERS_NAME "request-headers" |
| |
| /** |
| * TEST_HTTP_SRC_RESPONSE_HEADERS_NAME: |
| * The name of the #GstStructure that will contain all the HTTP response |
| * headers |
| */ |
| #define TEST_HTTP_SRC_RESPONSE_HEADERS_NAME "response-headers" |
| |
| /* structure used by src_start function to configure the |
| * GstTestHTTPSrc plugin. |
| * It specifies information about a given URI. |
| */ |
| typedef struct _GstTestHTTPSrcInput |
| { |
| gpointer context; /* opaque pointer that can be used in callbacks */ |
| guint64 size; /* size of resource, in bytes */ |
| GstStructure *request_headers; |
| GstStructure *response_headers; |
| guint status_code; /* HTTP status code */ |
| } GstTestHTTPSrcInput; |
| |
| /* Opaque structure used by GstTestHTTPSrc */ |
| typedef struct _GstTestHTTPSrc GstTestHTTPSrc; |
| |
| typedef struct _GstTestHTTPSrcCallbacks { |
| /** |
| * src_start: |
| * @src: The #GstTestHTTPSrc calling this callback |
| * @uri: The URI that is being requested |
| * @input_data: (out) The implementation of this callback is |
| * responsible for filling in this #GstTestHTTPSrcInput |
| * with the appropriate information, return returning %TRUE. |
| * If returning %FALSE, only GstTestHTTPSrcInput::status_code |
| * should be updated. |
| * Returns: %TRUE if GstTestHTTPSrc should respond to this URI, |
| * using the supplied input_data. |
| * |
| * src_start is used to "open" the given URI. The callback must return |
| * %TRUE to simulate a success, and set appropriate fields in input_data. |
| * Returning %FALSE indicates that the request URI is not found. |
| * In this situation GstTestHTTPSrc will cause the appropriate |
| * 404 error to be posted to the bus |
| */ |
| gboolean (*src_start)(GstTestHTTPSrc *src, |
| const gchar *uri, |
| GstTestHTTPSrcInput *input_data, |
| gpointer user_data); |
| /** |
| * src_create: |
| * @src: the #GstTestHTTPSrc calling this callback |
| * @offset: the offset from the start of the resource |
| * @length: requested number of bytes |
| * @retbuf: (out) used to return a newly allocated #GstBuffer |
| * @context: (allow none) the value of the context field |
| * in #GstTestHTTPSrcInput. |
| * @user_data: the value of user_data provided to |
| * #gst_test_http_src_install_callbacks |
| * Returns: %GST_FLOW_OK to indicate success, or some other value of |
| * #GstFlowReturn to indicate EOS or error. |
| * |
| * The src_create function is used to create a #GstBuffer for |
| * simulating the data that is returned when accessing this |
| * "open" stream. It can also be used to simulate various error |
| * conditions by returning something other than %GST_FLOW_OK |
| */ |
| GstFlowReturn (*src_create)(GstTestHTTPSrc *src, |
| guint64 offset, |
| guint length, |
| GstBuffer ** retbuf, |
| gpointer context, |
| gpointer user_data); |
| } GstTestHTTPSrcCallbacks; |
| |
| GType gst_test_http_src_get_type (void); |
| |
| /** |
| * gst_test_http_src_register_plugin: |
| * @registry: the #GstRegistry to use for registering this plugin |
| * @name: the name to use for this plugin |
| * Returns: true if successful |
| * |
| * Registers this plugin with the GstRegitry using the given name. It will |
| * be given a high rank, so that it will be picked in preference to any |
| * other element that implements #GstURIHandler. |
| */ |
| gboolean gst_test_http_src_register_plugin (GstRegistry * registry, const gchar * name); |
| |
| /** |
| * gst_test_http_src_install_callbacks: |
| * @callbacks: the #GstTestHTTPSrcCallbacks callback functions that will |
| * be called every time this element is asked to open a URI or provide data |
| * for an open URI. |
| * @user_data: a pointer that is passed to every callback |
| */ |
| void gst_test_http_src_install_callbacks (const GstTestHTTPSrcCallbacks *callbacks, gpointer user_data); |
| |
| /** |
| * gst_test_http_src_set_default_blocksize: |
| * @blocksize: the default block size to use (0=use #GstBaseSrc default) |
| * |
| * Set the default blocksize that will be used by instances of |
| * #GstTestHTTPSrc. It specifies the size (in bytes) that will be |
| * returned in each #GstBuffer. This default can be overridden |
| * by an instance of #GstTestHTTPSrc using the "blocksize" property |
| * of #GstBaseSrc |
| */ |
| void gst_test_http_src_set_default_blocksize (guint blocksize); |
| |
| G_END_DECLS |
| |
| #endif /* __GST_TEST_HTTP_SRC_H__ */ |