+
+
+/*
+ * A GFunc for g_queue_foreach()
+ *
+ * Args:
+ * data Event*, a UDP broadcast event
+ * user_data double*, the running sum
+ *
+ * Returns:
+ * Adds the time of the event to the sum
+ */
+static void gfSum(gpointer data, gpointer userData)
+{
+ Event* event= (Event*) data;
+
+ *(double*) userData+= event->wallTime.seconds + event->wallTime.nanosec /
+ 1e9;
+}
+
+
+/*
+ * A GFunc for g_queue_foreach()
+ *
+ * Args:
+ * data Event*, a UDP broadcast event
+ * user_data double*, the running sum
+ *
+ * Returns:
+ * Adds the square of the time of the event to the sum
+ */
+static void gfSumSquares(gpointer data, gpointer userData)
+{
+ Event* event= (Event*) data;
+
+ *(double*) userData+= pow(event->wallTime.seconds + event->wallTime.nanosec
+ / 1e9, 2.);
+}