ttd_task *ttd_task_new(int priority, ttd_task_func task_fn, void *task_data,
ttd_task_data_free_func data_free_fn);
+int ttd_task_set_task_id(ttd_task *task, const char *id);
+const char *ttd_task_get_task_id(ttd_task *task);
int ttd_task_set_complete_func(ttd_task *task, ttd_task_complete_func complete_fn, void *user_data);
int ttd_task_run(ttd_task *task);
int ttd_task_sort_func(const void *a, const void *b, void *user_data);
+void ttd_task_free(ttd_task *task);
#endif /* __TT_DAEMON_TASK_H__ */
struct __ttd_task {
int priority;
ttd_task_func task_func;
+ char *task_id;
void *task_data;
ttd_task_data_free_func data_free_func;
ttd_task_complete_func complete_func;
return task;
}
+int ttd_task_set_task_id(ttd_task *task, const char *id)
+{
+ if (!task)
+ return -1;
+
+ if (task->task_id)
+ g_free(task->task_id);
+
+ task->task_id = g_strdup(id);
+
+ return 0;
+}
+
+const char *ttd_task_get_task_id(ttd_task *task)
+{
+ if (!task)
+ return NULL;
+
+ return (const char *)task->task_id;
+}
+
int ttd_task_set_complete_func(ttd_task *task, ttd_task_complete_func complete_func, void *user_data)
{
if (!task)
retvm_if(!task, -1, "task is NULL");
retvm_if(!task->task_func, -1, "task_func is NULL");
+ if (task->task_id)
+ _D("task [%s] is running", task->task_id);
+
ret = task->task_func(task->task_data);
if (task->complete_func) {
return 0;
}
+
+void ttd_task_free(ttd_task *task)
+{
+ if (!task)
+ return;
+
+ if (task->task_id) {
+ _V("task [%s] is freed", task->task_id)
+ g_free(task->task_id);
+ }
+ g_free(task);
+}