/*
This file is part of GNUnet.
- (C) 2006-2013 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2006-2013 Christian Grothoff (and other contributing authors)
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
*/
#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 ***************************** */
/**
/**
* @ingroup logging
* Abort the process, generate a core dump if possible.
+ * Most code should use `GNUNET_assert (0)` instead to
+ * first log the location of the failure.
*/
void
-GNUNET_abort (void) GNUNET_NORETURN;
+GNUNET_abort_ (void) GNUNET_NORETURN;
/**
* @ingroup logging
* Use this for fatal errors that cannot be handled
*/
-#define GNUNET_assert(cond) do { if (! (cond)) { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("Assertion failed at %s:%d.\n"), __FILE__, __LINE__); GNUNET_abort(); } } while(0)
+#define GNUNET_assert(cond) do { if (! (cond)) { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("Assertion failed at %s:%d.\n"), __FILE__, __LINE__); GNUNET_abort_(); } } while(0)
/**
* @ingroup logging
* Use this for fatal errors that cannot be handled
*/
-#define GNUNET_assert_at(cond, f, l) do { if (! (cond)) { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("Assertion failed at %s:%d.\n"), f, l); GNUNET_abort(); } } while(0)
+#define GNUNET_assert_at(cond, f, l) do { if (! (cond)) { GNUNET_log(GNUNET_ERROR_TYPE_ERROR, _("Assertion failed at %s:%d.\n"), f, l); GNUNET_abort_(); } } while(0)
/**
/* ************************* 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 network byte order.
+ *
+ * @return The same value in host 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);
+
+/**
+ * Convert signed 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_htonll_signed (int64_t n);
+
+
+/**
+ * Convert signed 64-bit integer to host byte order.
+ *
+ * @param n
+ * The value in network byte order.
+ *
+ * @return The same value in host byte order.
+ */
+int64_t
+GNUNET_ntohll_signed (uint64_t n);
+
+
+/**
+ * Convert signed 32-bit integer to network byte order.
+ *
+ * @param n
+ * The value in host byte order.
+ *
+ * @return The same value in network byte order.
+ */
+uint32_t
+GNUNET_htonl_signed (int32_t n);
+
+
+/**
+ * Convert signed 32-bit integer to host byte order.
+ *
+ * @param n
+ * The value in network byte order.
+ *
+ * @return The same value in host byte order.
+ */
+int32_t
+GNUNET_ntohl_signed (uint32_t n);
+
+
+/**
+ * Convert signed 16-bit integer to network byte order.
+ *
+ * @param n
+ * The value in host byte order.
+ *
+ * @return The same value in network byte order.
+ */
+uint16_t
+GNUNET_htons_signed (int16_t n);
+
+
+/**
+ * Convert signed 16-bit integer to host byte order.
+ *
+ * @param n
+ * The value in network byte order.
+ *
+ * @return The same value in host byte order.
+ */
+int16_t
+GNUNET_ntohs_signed (uint16_t n);
+
+
/* ************************* allocation functions ****************** */
/**