jigdo API

glibcurl/glibcurl.c File Reference

#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 CurlGSourcecurlSrc = 0
static GSourceFuncs curlFuncs

Define Documentation

#define D ( _args   ) 

#define GLIBCURL_EXC   (G_IO_ERR | G_IO_HUP)

#define GLIBCURL_FDMAX   127

#define GLIBCURL_READ   (G_IO_IN | G_IO_PRI | G_IO_ERR | G_IO_HUP)

#define GLIBCURL_TIMEOUT   1000

Referenced by prepare().

#define GLIBCURL_WRITE   (G_IO_OUT | G_IO_ERR | G_IO_HUP)


Typedef Documentation

typedef struct CurlGSource_ CurlGSource

A structure which "derives" (in glib speak) from GSource.


Function Documentation

gboolean dispatch ( GSource *  source,
GSourceFunc  callback,
gpointer  user_data 
) [static]

void finalize ( GSource *  source  )  [static]

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 (  ) 

Return global multi handle.

References CurlGSource_::multiHandle.

Referenced by curlCallback().

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]


Variable Documentation

GSourceFuncs curlFuncs [static]

Initial value:

 {
  &prepare, &check, &dispatch, &finalize, 0, 0
}

CurlGSource* curlSrc = 0 [static]


Generated on Tue Sep 23 14:27:42 2008 for jigdo by  doxygen 1.5.6