gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r33159 - in gnunet/src/sensor: . sensors


From: gnunet
Subject: [GNUnet-SVN] r33159 - in gnunet/src/sensor: . sensors
Date: Fri, 2 May 2014 23:01:37 +0200

Author: otarabai
Date: 2014-05-02 23:01:37 +0200 (Fri, 02 May 2014)
New Revision: 33159

Modified:
   gnunet/src/sensor/gnunet-service-sensor.c
   gnunet/src/sensor/sensors/averagepingrtt
   gnunet/src/sensor/sensors/connectedpeers
Log:
fix in sensor scheduling


Modified: gnunet/src/sensor/gnunet-service-sensor.c
===================================================================
--- gnunet/src/sensor/gnunet-service-sensor.c   2014-05-02 18:43:17 UTC (rev 
33158)
+++ gnunet/src/sensor/gnunet-service-sensor.c   2014-05-02 21:01:37 UTC (rev 
33159)
@@ -82,7 +82,7 @@
   /*
    * Time interval to collect sensor information (e.g. every 1 min)
    */
-  struct GNUNET_TIME_Relative *interval;
+  struct GNUNET_TIME_Relative interval;
 
   /*
    * Lifetime of an information sample after which it is deleted from storage
@@ -144,6 +144,11 @@
    */
   struct GNUNET_TIME_Relative *p2p_interval;
 
+  /**
+   * Execution task (OR GNUNET_SCHEDULER_NO_TASK)
+   */
+  GNUNET_SCHEDULER_TaskIdentifier execution_task;
+
 };
 
 /**
@@ -157,6 +162,29 @@
 struct GNUNET_CONTAINER_MultiHashMap *sensors;
 
 /**
+ * Remove sensor execution from scheduler
+ *
+ * @param cls unused
+ * @param key hash of sensor name, key to hashmap
+ * @param value a 'struct SensorInfo *'
+ * @return #GNUNET_YES if we should continue to
+ *         iterate,
+ *         #GNUNET_NO if not.
+ */
+int unschedule_sensor(void *cls,
+    const struct GNUNET_HashCode *key, void *value)
+{
+  struct SensorInfo *sensorinfo = value;
+
+  if(GNUNET_SCHEDULER_NO_TASK != sensorinfo->execution_task)
+  {
+    GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Unscheduling sensor `%s'\n", 
sensorinfo->name);
+    GNUNET_SCHEDULER_cancel(sensorinfo->execution_task);
+  }
+  return GNUNET_YES;
+}
+
+/**
  * Task run during shutdown.
  *
  * @param cls unused
@@ -166,6 +194,7 @@
 shutdown_task (void *cls,
               const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
+  GNUNET_CONTAINER_multihashmap_iterate(sensors, &unschedule_sensor, NULL);
   GNUNET_SCHEDULER_shutdown();
 }
 
@@ -232,7 +261,6 @@
   char *starttime_str;
   char *endtime_str;
   unsigned long long interval_sec;
-  struct GNUNET_TIME_Relative interval;
 
   sensor = GNUNET_new(struct SensorInfo);
   //name
@@ -290,9 +318,10 @@
     GNUNET_free(sensor);
     return NULL;
   }
-  interval = GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 
interval_sec);
-  sensor->interval = &interval;
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Interval loaded: %" PRIu64 "\n", 
sensor->interval->rel_value_us);
+  sensor->interval = GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 
interval_sec);
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Interval loaded: %" PRIu64 "\n", 
sensor->interval.rel_value_us);
+  //execution task
+  sensor->execution_task = GNUNET_SCHEDULER_NO_TASK;
 
   return sensor;
 }
@@ -591,20 +620,20 @@
 
   if(GNUNET_NO == sensorinfo->enabled)
   {
-    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Sensor `%s' is disabled, will not 
run\n");
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Sensor `%s' is disabled, will not 
run\n", sensorinfo->name);
     return GNUNET_NO;
   }
   now = GNUNET_TIME_absolute_get();
   if(NULL != sensorinfo->start_time
       && now.abs_value_us < sensorinfo->start_time->abs_value_us)
   {
-    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Start time for sensor `%s' not reached 
yet, will not run\n");
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "Start time for sensor `%s' not reached 
yet, will not run\n", sensorinfo->name);
     return GNUNET_NO;
   }
   if(NULL != sensorinfo->end_time
       && now.abs_value_us >= sensorinfo->end_time->abs_value_us)
   {
-    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "End time for sensor `%s' passed, will 
not run\n");
+    GNUNET_log(GNUNET_ERROR_TYPE_INFO, "End time for sensor `%s' passed, will 
not run\n", sensorinfo->name);
     return GNUNET_NO;
   }
   return GNUNET_YES;
@@ -622,9 +651,10 @@
 {
   struct SensorInfo *sensorinfo = cls;
 
+  sensorinfo->execution_task = GNUNET_SCHEDULER_NO_TASK;
   if(GNUNET_NO == should_run_sensor(sensorinfo))
     return;
-  //GNUNET_SCHEDULER_add_delayed(*sensorinfo->interval, &run_sensor, 
sensorinfo);
+  sensorinfo->execution_task = 
GNUNET_SCHEDULER_add_delayed(sensorinfo->interval, &run_sensor, sensorinfo);
   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Starting the execution of sensor 
`%s'\n", sensorinfo->name);
 }
 
@@ -645,7 +675,14 @@
 
   if(GNUNET_NO == should_run_sensor(sensorinfo))
     return GNUNET_YES;
-  GNUNET_SCHEDULER_add_delayed(*sensorinfo->interval, &run_sensor, sensorinfo);
+  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Scheduling sensor `%s' to run after %" 
PRIu64 " microseconds\n",
+      sensorinfo->name, sensorinfo->interval.rel_value_us);
+  if(GNUNET_SCHEDULER_NO_TASK != sensorinfo->execution_task)
+  {
+    GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Sensor `%s' execution task already 
set, this should not happen\n", sensorinfo->name);
+    return GNUNET_NO;
+  }
+  sensorinfo->execution_task = 
GNUNET_SCHEDULER_add_delayed(sensorinfo->interval, &run_sensor, sensorinfo);
   return GNUNET_YES;
 }
 

Modified: gnunet/src/sensor/sensors/averagepingrtt
===================================================================
--- gnunet/src/sensor/sensors/averagepingrtt    2014-05-02 18:43:17 UTC (rev 
33158)
+++ gnunet/src/sensor/sensors/averagepingrtt    2014-05-02 21:01:37 UTC (rev 
33159)
@@ -3,7 +3,7 @@
 VERSION = 1.0
 DESCRIPTION = Calculate average ping latency to gnunet.org
 CATEGORY = Internet-Connectivity
-ENABLED = YES
+ENABLED = NO
 
 # Start and end time format: %Y-%m-%d %H:%M:%S
 #START_TIME = 

Modified: gnunet/src/sensor/sensors/connectedpeers
===================================================================
--- gnunet/src/sensor/sensors/connectedpeers    2014-05-02 18:43:17 UTC (rev 
33158)
+++ gnunet/src/sensor/sensors/connectedpeers    2014-05-02 21:01:37 UTC (rev 
33159)
@@ -3,7 +3,7 @@
 VERSION = 1.0
 DESCRIPTION = Gets the number of connected peers from core
 CATEGORY = P2P-Connectivity
-ENABLED = NO
+ENABLED = YES
 
 # Start and end time format: %Y-%m-%d %H:%M:%S
 #START_TIME = 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]