/**
* Obtain the information for a select() call to wait until
- * #GNUNET_CURL_perform() is ready again. Note that calling
- * any other TALER_EXCHANGE-API may also imply that the library
- * is again ready for #GNUNET_CURL_perform().
+ * #GNUNET_CURL_perform() is ready again.
*
* Basically, a client should use this API to prepare for select(),
* then block on select(), then call #GNUNET_CURL_perform() and then
/**
- * Run the main event loop for the Taler interaction.
+ * Run the main event loop for the CURL interaction.
*
* @param ctx the library context
*/
void
GNUNET_CURL_job_cancel (struct GNUNET_CURL_Job *job);
+
+/* ******* GNUnet SCHEDULER integration ************ */
+
+
+/**
+ * Closure for #GNUNET_CURL_gnunet_scheduler_reschedule().
+ */
+struct GNUNET_CURL_RescheduleContext;
+
+
+/**
+ * Initialize reschedule context.
+ *
+ * @param ctx context to manage
+ * @return closure for #GNUNET_CURL_gnunet_scheduler_reschedule().
+ */
+struct GNUNET_CURL_RescheduleContext *
+GNUNET_CURL_gnunet_rc_create (struct GNUNET_CURL_Context *ctx);
+
+/**
+ * Destroy reschedule context.
+ *
+ * @param rc context to destroy
+ */
+void
+GNUNET_CURL_gnunet_rc_destroy (struct GNUNET_CURL_RescheduleContext *rc);
+
+
+/**
+ * Implementation of the #GNUNET_CURL_RescheduleCallback for GNUnet's
+ * scheduler. Will run the CURL context using GNUnet's scheduler.
+ * Note that you MUST immediately destroy the reschedule context after
+ * calling #GNUNET_CURL_fini().
+ *
+ * @param cls must point to a `struct GNUNET_CURL_RescheduleContext *`
+ * (pointer to a pointer!)
+ */
+void
+GNUNET_CURL_gnunet_scheduler_reschedule (void *cls);
+
+
#endif
/** @} */ /* end of group */