+/**
+ * Valid task priorities. Use these, do not pass random integers!
+ * For various reasons (#3862 -- building with QT Creator, and
+ * our restricted cross-compilation with emscripten) this cannot
+ * be in gnunet_scheduler_lib.h, but it works if we declare it here.
+ * Naturally, logically this is part of the scheduler.
+ */
+enum GNUNET_SCHEDULER_Priority
+{
+ /**
+ * Run with the same priority as the current job.
+ */
+ GNUNET_SCHEDULER_PRIORITY_KEEP = 0,
+
+ /**
+ * Run when otherwise idle.
+ */
+ GNUNET_SCHEDULER_PRIORITY_IDLE = 1,
+
+ /**
+ * Run as background job (higher than idle,
+ * lower than default).
+ */
+ GNUNET_SCHEDULER_PRIORITY_BACKGROUND = 2,
+
+ /**
+ * Run with the default priority (normal
+ * P2P operations). Any task that is scheduled
+ * without an explicit priority being specified
+ * will run with this priority.
+ */
+ GNUNET_SCHEDULER_PRIORITY_DEFAULT = 3,
+
+ /**
+ * Run with high priority (important requests).
+ * Higher than DEFAULT.
+ */
+ GNUNET_SCHEDULER_PRIORITY_HIGH = 4,
+
+ /**
+ * Run with priority for interactive tasks.
+ * Higher than "HIGH".
+ */
+ GNUNET_SCHEDULER_PRIORITY_UI = 5,
+
+ /**
+ * Run with priority for urgent tasks. Use
+ * for things like aborts and shutdowns that
+ * need to preempt "UI"-level tasks.
+ * Higher than "UI".
+ */
+ GNUNET_SCHEDULER_PRIORITY_URGENT = 6,
+
+ /**
+ * This is an internal priority level that is only used for tasks
+ * that are being triggered due to shutdown (they have automatically
+ * highest priority). User code must not use this priority level
+ * directly. Tasks run with this priority level that internally
+ * schedule other tasks will see their original priority level
+ * be inherited (unless otherwise specified).
+ */
+ GNUNET_SCHEDULER_PRIORITY_SHUTDOWN = 7,
+
+ /**
+ * Number of priorities (must be the last priority).
+ * This priority must not be used by clients.
+ */
+ GNUNET_SCHEDULER_PRIORITY_COUNT = 8
+};