/**
* 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;
};
struct
GNUNET_TIME_Relative t2);
+
+/**
+ * Return the maximum of two relative time values.
+ *
+ * @param t1 first timestamp
+ * @param t2 other timestamp
+ * @return timestamp that is larger
+ */
+struct GNUNET_TIME_Relative GNUNET_TIME_relative_max (struct
+ GNUNET_TIME_Relative
+ t1,
+ struct
+ GNUNET_TIME_Relative t2);
+
/**
* Return the minimum of two absolute time values.
*
struct
GNUNET_TIME_Absolute t2);
+/**
+ * Return the maximum of two absolute time values.
+ *
+ * @param t1 first timestamp
+ * @param t2 other timestamp
+ * @return timestamp that is smaller
+ */
+struct GNUNET_TIME_Absolute GNUNET_TIME_absolute_max (struct
+ GNUNET_TIME_Absolute
+ t1,
+ struct
+ GNUNET_TIME_Absolute t2);
+
/**
* Given a timestamp in the future, how much time
* remains until then?
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.
*
unsigned int
factor);
+/**
+ * Divide relative time by a given factor.
+ *
+ * @param rel some duration
+ * @param factor integer to divide by
+ * @return FOREVER if rel=FOREVER or factor==0; otherwise rel/factor
+ */
+struct GNUNET_TIME_Relative GNUNET_TIME_relative_divide (struct
+ GNUNET_TIME_Relative
+ rel,
+ unsigned int
+ factor);
+
/**
* Add relative times together.
*
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.