API update to fix #4479
authorChristian Grothoff <christian@grothoff.org>
Mon, 2 May 2016 00:23:27 +0000 (00:23 +0000)
committerChristian Grothoff <christian@grothoff.org>
Mon, 2 May 2016 00:23:27 +0000 (00:23 +0000)
po/POTFILES.in
src/curl/curl.c
src/include/gnunet_curl_lib.h

index 06d1802314bf9886b9fb5deee3eec1c54f58f6c2..ad6c57a905b943691140ee6c788ae9de1f319ec4 100644 (file)
@@ -429,7 +429,6 @@ src/util/crypto_random.c
 src/util/crypto_rsa.c
 src/util/crypto_symmetric.c
 src/util/disk.c
-src/util/disk_iterator.c
 src/util/getopt.c
 src/util/getopt_helpers.c
 src/util/gnunet-config.c
index 92761989fbc7ba19a0296561ae22b7796182b474..ac9eeb4fc9c2fd824c3d0dac1c2b8c597142884c 100644 (file)
@@ -159,6 +159,16 @@ struct GNUNET_CURL_Context
    */
   struct curl_slist *json_header;
 
+  /**
+   * Function we need to call whenever the event loop's
+   * socket set changed.
+   */
+  GNUNET_CURL_RescheduleCallback cb;
+
+  /**
+   * Closure for @e cb.
+   */
+  void *cb_cls;
 };
 
 
@@ -166,10 +176,13 @@ struct GNUNET_CURL_Context
  * Initialise this library.  This function should be called before using any of
  * the following functions.
  *
+ * @param cb function to call when rescheduling is required
+ * @param cb_cls closure for @a cb
  * @return library context
  */
 struct GNUNET_CURL_Context *
-GNUNET_CURL_init ()
+GNUNET_CURL_init (GNUNET_CURL_RescheduleCallback cb,
+                  void *cb_cls)
 {
   struct GNUNET_CURL_Context *ctx;
   CURLM *multi;
@@ -194,6 +207,8 @@ GNUNET_CURL_init ()
     return NULL;
   }
   ctx = GNUNET_new (struct GNUNET_CURL_Context);
+  ctx->cb = cb;
+  ctx->cb_cls = cb_cls;
   ctx->multi = multi;
   ctx->share = share;
   GNUNET_assert (NULL != (ctx->json_header =
@@ -316,6 +331,7 @@ GNUNET_CURL_job_add (struct GNUNET_CURL_Context *ctx,
   GNUNET_CONTAINER_DLL_insert (ctx->jobs_head,
                                ctx->jobs_tail,
                                job);
+  ctx->cb (ctx->cb_cls);
   return job;
 }
 
index faa7abbed8564e183e04ecaf6c0609237ddc7654..c57b9ed3b72d95ea96dcfc670697293e540eae37 100644 (file)
 #include "gnunet_util_lib.h"
 
 
+/**
+ * Function called by the context to ask for the event loop to be
+ * rescheduled, that is the application should call
+ * #GNUNET_CURL_get_select_info() as the set of sockets we care about
+ * just changed.
+ *
+ * @param cls closure
+ */
+typedef void
+(*GNUNET_CURL_RescheduleCallback)(void *cls);
+
+
 /**
  * Initialise this library.  This function should be called before using any of
  * the following functions.
  *
+ * @param cb function to call when rescheduling is required
+ * @param cb_cls closure for @a cb
  * @return library context
  */
 struct GNUNET_CURL_Context *
-GNUNET_CURL_init (void);
+GNUNET_CURL_init (GNUNET_CURL_RescheduleCallback cb,
+                  void *cb_cls);
 
 
 /**