-static void SensorHandler(void * data, char * params)
-{
- static DataPoint buffer[SENSOR_QUERYBUFSIZ];
- StatusCodes status = STATUS_OK;
- const char * key; const char * value;
-
- int sensor_id = SENSOR_NONE;
-
- do
- {
- params = FCGI_KeyPair(params, &key, &value);
- Log(LOGDEBUG, "Got key=%s and value=%s", key, value);
- if (strcmp(key, "id") == 0)
- {
- if (sensor_id != SENSOR_NONE)
- {
- Log(LOGERR, "Only one sensor id should be specified");
- status = STATUS_BADREQUEST;
- break;
- }
- //TODO: Use human readable sensor identifier string for API?
- sensor_id = atoi(value);
- if (sensor_id == 0 && strcmp(value, "0") != 0)
- {
- Log(LOGERR, "Sensor id not an integer; %s", value);
- status = STATUS_BADREQUEST;
- break;
- }
- }
- else
- {
- Log(LOGERR, "Unknown key \"%s\" (value = %s)", key, value);
- status = STATUS_BADREQUEST;
- break;
- }
- }
- while (params != NULL && *params != '\0');
-
- if (sensor_id == SENSOR_NONE)
- {
- Log(LOGERR, "No sensor id specified");
- status = STATUS_BADREQUEST;
- }
- if (sensor_id >= NUMSENSORS || sensor_id < 0)
- {
- Log(LOGERR, "Invalid sensor id %d", sensor_id);
- status = STATUS_BADREQUEST;
+bool FCGI_HasControl(FCGIContext *context, const char *key) {
+ time_t now = time(NULL);
+ int result = (now - context->control_timestamp) <= CONTROL_TIMEOUT &&
+ key != NULL && !strcmp(context->control_key, key);
+ if (result) {
+ context->control_timestamp = now; //Update the control_timestamp