+ inline time_t Time() { return TIME.tv_sec; }
+ /** The fractional time at the start of this mainloop iteration (nanoseconds) */
+ inline long Time_ns() { return TIME.tv_nsec; }
+ /** Update the current time. Don't call this unless you have reason to do so. */
+ void UpdateTime();
+
+ /** Generate a random string with the given length
+ * @param length The length in bytes
+ * @param printable if false, the string will use characters 0-255; otherwise,
+ * it will be limited to 0x30-0x7E ('0'-'~', nonspace printable characters)
+ */
+ std::string GenRandomStr(int length, bool printable = true);
+ /** Generate a random integer.
+ * This is generally more secure than rand()
+ */
+ unsigned long GenRandomInt(unsigned long max);
+
+ /** Fill a buffer with random bits */
+ caller2<void, char*, size_t> GenRandom;