/**
* The actual value.
*/
- uint64_t value;
+ uint64_t abs_value;
};
/**
/**
* The actual value.
*/
- uint64_t value;
+ uint64_t rel_value;
};
/**
* The actual value (in network byte order).
*/
- uint64_t value__ GNUNET_PACKED;
+ uint64_t rel_value__ GNUNET_PACKED;
};
/**
* The actual value (in network byte order).
*/
- uint64_t value__ GNUNET_PACKED;
+ uint64_t abs_value__ GNUNET_PACKED;
};
GNUNET_TIME_Relative
duration);
+
+/**
+ * Subtract a given relative duration from the
+ * given start time.
+ *
+ * @param start some absolute time
+ * @param duration some relative time to subtract
+ * @return ZERO if start <= duration, or FOREVER if start time is FOREVER; start-duration otherwise
+ */
+struct GNUNET_TIME_Absolute GNUNET_TIME_absolute_subtract (struct
+ GNUNET_TIME_Absolute
+ start,
+ struct
+ GNUNET_TIME_Relative
+ duration);
+
/**
* Multiply relative time by a given factor.
*
GNUNET_TIME_Relative
a2);
+/**
+ * Subtract relative timestamp from the other.
+ *
+ * @param a1 first timestamp
+ * @param a2 second timestamp
+ * @return ZERO if a2>=a1 (including both FOREVER), FOREVER if a1 is FOREVER, a1-a2 otherwise
+ */
+struct GNUNET_TIME_Relative
+GNUNET_TIME_relative_subtract (struct GNUNET_TIME_Relative a1,
+ struct GNUNET_TIME_Relative a2);
+
/**
* Convert relative time to network byte order.