You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
/**
#include <stdarg.h>
#endif
+#ifdef HAVE_BYTESWAP_H
+#include <byteswap.h>
+#endif
+
#ifdef __cplusplus
extern "C"
{
*/
#define GNUNET_UTIL_VERSION 0x000A0100
+
/**
* Named constants for return values. The following invariants hold:
* `GNUNET_NO == 0` (to allow `if (GNUNET_NO)`) `GNUNET_OK !=
};
+
+/**
+ * Answer from service to client about last operation.
+ */
+struct GNUNET_OperationResultMessage
+{
+ struct GNUNET_MessageHeader header;
+
+ uint32_t reserved GNUNET_PACKED;
+
+ /**
+ * Operation ID.
+ */
+ uint64_t op_id GNUNET_PACKED;
+
+ /**
+ * Status code for the operation.
+ */
+ uint64_t result_code GNUNET_PACKED;
+
+ /* Followed by data. */
+};
+
GNUNET_NETWORK_STRUCT_END
/**
(*GNUNET_ContinuationCallback) (void *cls);
+/**
+ * Function called with the result of an asynchronous operation.
+ *
+ * @param cls
+ * Closure.
+ * @param result_code
+ * Result code for the operation.
+ * @param data
+ * Data result for the operation.
+ * @param data_size
+ * Size of @a data.
+ */
+typedef void
+(*GNUNET_ResultCallback) (void *cls, int64_t result_code,
+ const void *data, uint16_t data_size);
+
+
/* ****************************** logging ***************************** */
/**
/* ************************* endianess conversion ****************** */
/**
- * Convert unsigned 64-bit integer to host-byte-order.
- * @param n the value in network byte order
- * @return the same value in host byte order
+ * Convert unsigned 64-bit integer to network byte order.
+ *
+ * @param n
+ * The value in host byte order.
+ *
+ * @return The same value in network byte order.
*/
uint64_t
-GNUNET_ntohll (uint64_t n);
+GNUNET_htonll (uint64_t n);
+
/**
- * Convert unsigned 64-bit integer to network-byte-order.
- * @param n the value in host byte order
- * @return the same value in network byte order
+ * Convert unsigned 64-bit integer to host byte order.
+ *
+ * @param n
+ * The value in network byte order.
+ *
+ * @return The same value in host byte order.
*/
uint64_t
-GNUNET_htonll (uint64_t n);
+GNUNET_ntohll (uint64_t n);
+
/**
- * Convert double to network-byte-order.
- * @param d the value in network byte order
- * @return the same value in host byte order
+ * Convert double to network byte order.
+ *
+ * @param d
+ * The value in host byte order.
+ *
+ * @return The same value in network byte order.
*/
double
GNUNET_hton_double (double d);
+
/**
- * Convert double to host-byte-order
- * @param d the value in network byte order
- * @return the same value in host byte order
+ * Convert double to host byte order
+ *
+ * @param d
+ * The value in network byte order.
+ *
+ * @return The same value in host byte order.
*/
double
GNUNET_ntoh_double (double d);
+
/* ************************* allocation functions ****************** */
/**
#endif
+/**
+ * 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
+};
+
+
#if 0 /* keep Emacsens' auto-indent happy */
{
#endif