#include "config-deserializer.h"
#include "config.h"
#include "err-check.h"
+#include "log.h"
static JsonNode *parse_string(JsonParser *parser, const char *config_json);
static void config_array_iterate_func(JsonArray *array, guint index, JsonNode *element, gpointer user_data);
static config_options_e config_parse_options(const char *option);
-config_t *deserialize_configs(const char *config_json, int *size)
+config_t *deserialize_configs(const char *config_json, int *size, int *total_duration)
{
JsonParser *parser = json_parser_new();
JsonNode *root = parse_string(parser, config_json);
+ JsonObject *obj = json_node_get_object(root);
- JsonArray *array = json_node_get_array(root);
+ int td = json_object_get_int_member(obj, SCHEMA_CONFIG_TOTAL_DURATION);
+ *total_duration = td;
+
+ JsonArray *array = json_object_get_array_member(obj, SCHEMA_CONFIG_ENTRY);
if (!array)
{
ERR("Json config is invalid!");
* @return Dynamically allocated config_t array.
* @note Returned array should be released with free.
*/
-config_t *deserialize_configs(const char *config_json, int *size);
+config_t *deserialize_configs(const char *config_json, int *size, int *total_duration);
#endif
\ No newline at end of file
#ifndef __JSON_SCHEMA_DEFS_H_
#define __JSON_SCHEMA_DEFS_H_
+#define SCHEMA_CONFIG_TOTAL_DURATION "total_duration"
+#define SCHEMA_CONFIG_ENTRY "config_entry"
+
#define SCHEMA_TYPE "type"
#define SCHEMA_TYPE_TOP "TOP"
#define SCHEMA_TYPE_SYSTEM "SYSTEM"
{
ON_NULL_RETURN_VAL(app_id, NULL);
- report_generator_app_t *ret = malloc(sizeof(struct report_generator_app));
+ report_generator_app_t *ret = calloc(1, sizeof(struct report_generator_app));
if (!ret) {
ERR("malloc failed");
return NULL;
}
strncpy(report->app_id, generator->app_id, sizeof(report->app_id));
+ report->process_report.pid = generator->process_gen->pid;
return 0;
}
}
strncpy(report->app_id, generator->app_id, sizeof(report->app_id));
+ report->process_report.pid = generator->process_gen->pid;
return 0;
}
json_builder_set_member_name(builder, SCHEMA_ID);
json_builder_add_string_value(builder, report->app_id);
json_builder_set_member_name(builder, SCHEMA_RESULT_PID);
- json_builder_add_double_value(builder, report->process_report.pid);
+ json_builder_add_int_value(builder, report->process_report.pid);
json_builder_set_member_name(builder, SCHEMA_RESULT_RESULT);
json_builder_begin_object(builder);
json_builder_set_member_name(builder, SCHEMA_RESULT_TIME);
- json_builder_add_double_value(builder, report->process_report.time);
+ json_builder_add_int_value(builder, report->process_report.time);
json_builder_set_member_name(builder, SCHEMA_RESULT_USAGE);
json_builder_add_double_value(builder, report->process_report.usage);
json_builder_set_member_name(builder, SCHEMA_ID);
json_builder_add_string_value(builder, report->app_id);
json_builder_set_member_name(builder, SCHEMA_RESULT_PID);
- json_builder_add_double_value(builder, report->process_report.pid);
+ json_builder_add_int_value(builder, report->process_report.pid);
json_builder_set_member_name(builder, SCHEMA_RESULT_RESULT);
json_builder_begin_object(builder);
json_builder_set_member_name(builder, SCHEMA_RESULT_TIME);
- json_builder_add_double_value(builder, report->process_report.time);
+ json_builder_add_int_value(builder, report->process_report.time);
json_builder_set_member_name(builder, SCHEMA_RESULT_USAGE);
json_builder_add_double_value(builder, report->process_report.usage);
#include "task.h"
#include "worker.h"
#include "task-factory.h"
+#include "task-worker.h"
struct scheduler
{
static gboolean timer_func(gpointer user_data);
static void free_items(struct config_item *items, size_t items_size);
+static gboolean timeout_func(gpointer user_data);
scheduler_t *scheduler_create()
{
g_free(scheduler);
}
-void scheduler_change_config(scheduler_t *scheduler, const config_t *task_configs, size_t items_size)
+void scheduler_change_config(scheduler_t *scheduler, const config_t *task_configs, size_t items_size, int timeout)
{
ON_NULL_RETURN(scheduler);
ON_NULL_RETURN(task_configs);
scheduler->items[i].frequency = task_configs[i].frequency;
scheduler->items[i].timer_id = g_timeout_add(scheduler->items[i].frequency, timer_func, &scheduler->items[i]);
}
+
+ g_timeout_add(timeout, timeout_func, scheduler);
+}
+
+static gboolean timeout_func(gpointer user_data)
+{
+ cleanup_and_exit();
+ return TRUE;
}
static gboolean timer_func(gpointer user_data)
* @brief Changes current tasks config.
* @param[in] task_configs Array with tasks config.
* @param[in] config_size Size of the task_configs array.
+ * @param[in] timeout After this time scheduler will stop working.
*/
-void scheduler_change_config(scheduler_t *scheduler, const config_t *task_configs, size_t config_size);
+void scheduler_change_config(scheduler_t *scheduler, const config_t *task_configs, size_t config_size, int timeout);
#endif
app_task_t *_app_task = container_of(task, app_task_t, task);
- struct app_memory_usage_report reports;
+ struct app_memory_usage_report report;
- report_generator_generate_app_memory_usage_report(_app_task->report_generator, &reports);
+ report_generator_generate_app_memory_usage_report(_app_task->report_generator, &report);
- char *json_report = report_json_serializer_serialize_apps_memory_usage_report(&reports);
+ char *json_report = report_json_serializer_serialize_apps_memory_usage_report(&report);
send_report(json_report);
g_free(json_report);
}
{
return 0;
}
+
+void cleanup_and_exit()
+{
+ //TODO implement
+}
--- /dev/null
+/*
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __JSON_TASK_WORKER_H_
+#define __JSON_TASK_WORKER_H_
+
+void cleanup_and_exit();
+
+#endif
\ No newline at end of file