[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 =
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r33159 - in gnunet/src/sensor: . sensors,
gnunet <=