#include <glib.h>#include <glibcurl.h>#include <stdio.h>#include <string.h>#include <assert.h>Classes | |
| struct | CurlGSource_ |
| A structure which "derives" (in glib speak) from GSource. More... | |
Defines | |
| #define | D(_args) |
| #define | GLIBCURL_FDMAX 127 |
| #define | GLIBCURL_TIMEOUT 1000 |
| #define | GLIBCURL_READ (G_IO_IN | G_IO_PRI | G_IO_ERR | G_IO_HUP) |
| #define | GLIBCURL_WRITE (G_IO_OUT | G_IO_ERR | G_IO_HUP) |
| #define | GLIBCURL_EXC (G_IO_ERR | G_IO_HUP) |
Typedefs | |
| typedef struct CurlGSource_ | CurlGSource |
| A structure which "derives" (in glib speak) from GSource. | |
Functions | |
| static gboolean | prepare (GSource *source, gint *timeout) |
| static gboolean | check (GSource *source) |
| static gboolean | dispatch (GSource *source, GSourceFunc callback, gpointer user_data) |
| static void | finalize (GSource *source) |
| void | glibcurl_init () |
| Initialize libcurl. | |
| CURLM * | glibcurl_handle () |
| Return global multi handle. | |
| CURLMcode | glibcurl_add (CURL *easy_handle) |
| Convenience function, just executes curl_multi_add_handle(glibcurl_handle(), easy_handle); glibcurl_start(). | |
| CURLMcode | glibcurl_remove (CURL *easy_handle) |
| Convenience function, just executes curl_multi_remove_handle(glibcurl_handle(), easy_handle). | |
| void | glibcurl_start () |
| Call this whenever you have added a request using curl_multi_add_handle(). | |
| void | glibcurl_set_callback (GlibcurlCallback function, void *data) |
| Set function to call after each invocation of curl_multi_perform(). | |
| void | glibcurl_cleanup () |
| You must call glibcurl_remove() and curl_easy_cleanup() for all requests before calling this. | |
| static void | registerUnregisterFds () |
Variables | |
| static CurlGSource * | curlSrc = 0 |
| static GSourceFuncs | curlFuncs |
| #define D | ( | _args | ) |
Referenced by glibcurl_init(), prepare(), and registerUnregisterFds().
| #define GLIBCURL_EXC (G_IO_ERR | G_IO_HUP) |
Referenced by glibcurl_init(), and registerUnregisterFds().
| #define GLIBCURL_FDMAX 127 |
Referenced by glibcurl_init(), and registerUnregisterFds().
| #define GLIBCURL_READ (G_IO_IN | G_IO_PRI | G_IO_ERR | G_IO_HUP) |
Referenced by glibcurl_init(), and registerUnregisterFds().
| #define GLIBCURL_TIMEOUT 1000 |
Referenced by prepare().
| #define GLIBCURL_WRITE (G_IO_OUT | G_IO_ERR | G_IO_HUP) |
Referenced by glibcurl_init(), and registerUnregisterFds().
| typedef struct CurlGSource_ CurlGSource |
A structure which "derives" (in glib speak) from GSource.
| gboolean check | ( | GSource * | source | ) | [static] |
| gboolean dispatch | ( | GSource * | source, | |
| GSourceFunc | callback, | |||
| gpointer | user_data | |||
| ) | [static] |
| void finalize | ( | GSource * | source | ) | [static] |
References registerUnregisterFds(), and CurlGSource_::source.
| CURLMcode glibcurl_add | ( | CURL * | easy_handle | ) |
Convenience function, just executes curl_multi_add_handle(glibcurl_handle(), easy_handle); glibcurl_start().
References CurlGSource_::callPerform, and CurlGSource_::multiHandle.
Referenced by Download::cont(), main(), and Download::run().
| void glibcurl_cleanup | ( | ) |
You must call glibcurl_remove() and curl_easy_cleanup() for all requests before calling this.
This function makes calls to curl_multi_cleanup() and curl_global_cleanup().
References CurlGSource_::multiHandle, and CurlGSource_::source.
Referenced by Download::cleanup(), and main().
| CURLM* glibcurl_handle | ( | ) |
| void glibcurl_init | ( | ) |
Initialize libcurl.
Call this once at the beginning of your program. This function makes calls to curl_global_init() and curl_multi_init()
References CurlGSource_::callPerform, D, GLIBCURL_EXC, GLIBCURL_FDMAX, GLIBCURL_READ, GLIBCURL_WRITE, CurlGSource_::lastPollFd, CurlGSource_::lastPollFdMax, CurlGSource_::multiHandle, NULL, and CurlGSource_::source.
Referenced by Download::init(), and main().
| CURLMcode glibcurl_remove | ( | CURL * | easy_handle | ) |
Convenience function, just executes curl_multi_remove_handle(glibcurl_handle(), easy_handle).
References CurlGSource_::multiHandle.
Referenced by main(), Download::pause(), Download::stop(), and Download::~Download().
| void glibcurl_set_callback | ( | GlibcurlCallback | function, | |
| void * | data | |||
| ) |
Set function to call after each invocation of curl_multi_perform().
Pass function==0 to unregister a previously set callback. The callback function will be called with the supplied data pointer as its first argument.
References NULL, and CurlGSource_::source.
Referenced by Download::init(), and main().
| void glibcurl_start | ( | ) |
Call this whenever you have added a request using curl_multi_add_handle().
This is necessary to start new requests. It does so by triggering a call to curl_multi_perform() even in the case where no open fds cause that function to be called anyway. The call happens "later", i.e. during the next iteration of the glib main loop. glibcurl_start() only sets a flag to make it happen.
References CurlGSource_::callPerform.
| gboolean prepare | ( | GSource * | source, | |
| gint * | timeout | |||
| ) | [static] |
| static void registerUnregisterFds | ( | ) | [static] |
References D, CurlGSource_::fdExc, CurlGSource_::fdMax, CurlGSource_::fdRead, CurlGSource_::fdWrite, GLIBCURL_EXC, GLIBCURL_FDMAX, GLIBCURL_READ, GLIBCURL_WRITE, CurlGSource_::lastPollFd, CurlGSource_::lastPollFdMax, CurlGSource_::multiHandle, and CurlGSource_::source.
Referenced by dispatch(), finalize(), and prepare().
CurlGSource* curlSrc = 0 [static] |
1.5.6