Link libgnunetblockgroup to libgnunetblock
[oweals/gnunet.git] / src / util / load.c
index 1df1abc7c40512fe8bf051e0f1bcf56645da27f7..d1de6aa3663ac59843c0fd08cb413dc0de5f7f33 100644 (file)
@@ -1,10 +1,10 @@
 /*
      This file is part of GNUnet.
-     (C) 2010 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2010, 2013 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
  * @author Christian Grothoff
  */
 #include "platform.h"
-#include "gnunet_load_lib.h"
+#include "gnunet_util_lib.h"
 
-#define DEBUG_LOAD GNUNET_EXTRA_LOGGING
 
-#define LOG(kind,...) GNUNET_log_from (kind, "util", __VA_ARGS__)
+#define LOG(kind,...) GNUNET_log_from (kind, "util-load", __VA_ARGS__)
 
 /**
  * Values we track for load calculations.
@@ -88,29 +87,29 @@ internal_update (struct GNUNET_LOAD_Value *load)
   struct GNUNET_TIME_Relative delta;
   unsigned int n;
 
-  if (load->autodecline.rel_value == GNUNET_TIME_UNIT_FOREVER_REL.rel_value)
+  if (load->autodecline.rel_value_us == GNUNET_TIME_UNIT_FOREVER_REL.rel_value_us)
     return;
   delta = GNUNET_TIME_absolute_get_duration (load->last_update);
-  if (delta.rel_value < load->autodecline.rel_value)
+  if (delta.rel_value_us < load->autodecline.rel_value_us)
     return;
-  if (load->autodecline.rel_value == 0)
-    {
-      load->runavg_delay = 0.0;
-      load->load = 0;
-      return;
-    }
-  n = delta.rel_value / load->autodecline.rel_value;
+  if (0 == load->autodecline.rel_value_us)
+  {
+    load->runavg_delay = 0.0;
+    load->load = 0;
+    return;
+  }
+  n = delta.rel_value_us / load->autodecline.rel_value_us;
   if (n > 16)
-    {
-      load->runavg_delay = 0.0;
-      load->load = 0;
-      return;
-    }
+  {
+    load->runavg_delay = 0.0;
+    load->load = 0;
+    return;
+  }
   while (n > 0)
-    {
-      n--;
-      load->runavg_delay = (load->runavg_delay * 7.0) / 8.0;
-    }
+  {
+    n--;
+    load->runavg_delay = (load->runavg_delay * 7.0) / 8.0;
+  }
 }
 
 
@@ -127,7 +126,7 @@ GNUNET_LOAD_value_init (struct GNUNET_TIME_Relative autodecline)
 {
   struct GNUNET_LOAD_Value *ret;
 
-  ret = GNUNET_malloc (sizeof (struct GNUNET_LOAD_Value));
+  ret = GNUNET_new (struct GNUNET_LOAD_Value);
   ret->autodecline = autodecline;
   ret->last_update = GNUNET_TIME_absolute_get ();
   return ret;
@@ -142,7 +141,7 @@ GNUNET_LOAD_value_init (struct GNUNET_TIME_Relative autodecline)
  */
 void
 GNUNET_LOAD_value_set_decline (struct GNUNET_LOAD_Value *load,
-                              struct GNUNET_TIME_Relative autodecline)
+                               struct GNUNET_TIME_Relative autodecline)
 {
   internal_update (load);
   load->autodecline = autodecline;
@@ -177,10 +176,10 @@ calculate_load (struct GNUNET_LOAD_Value *load)
   nm1 = n - 1.0;
   avgdel = sum_val_i / n;
   stddev =
-    (((double) load->cummulative_squared_delay) - 2.0 * avgdel * sum_val_i +
-     n * avgdel * avgdel) / nm1;
+      (((double) load->cummulative_squared_delay) - 2.0 * avgdel * sum_val_i +
+       n * avgdel * avgdel) / nm1;
   if (stddev <= 0)
-    stddev = 0.01;             /* must have been rounding error or zero; prevent division by zero */
+    stddev = 0.01;              /* must have been rounding error or zero; prevent division by zero */
   /* now calculate load based on how far out we are from
    * std dev; or if we are below average, simply assume load zero */
   if (load->runavg_delay < avgdel)
@@ -243,11 +242,11 @@ GNUNET_LOAD_update (struct GNUNET_LOAD_Value *load, uint64_t data)
   internal_update (load);
   load->last_update = GNUNET_TIME_absolute_get ();
   if (data > 64 * 1024)
-    {
-      /* very large */
-      load->load = 100.0;
-      return;
-    }
+  {
+    /* very large */
+    load->load = 100.0;
+    return;
+  }
   dv = (uint32_t) data;
   load->cummulative_delay += dv;
   load->cummulative_squared_delay += dv * dv;