summaryrefslogtreecommitdiff
path: root/src/core/task.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/task.h')
-rw-r--r--src/core/task.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/core/task.h b/src/core/task.h
new file mode 100644
index 0000000..6677739
--- /dev/null
+++ b/src/core/task.h
@@ -0,0 +1,59 @@
+/* BSD-2-Clause license
+ *
+ * Copyright (c) 2018-2023 NST <www.newinfosec.ru>, sss <sss at dark-alexandr dot net>.
+ *
+ */
+
+#pragma once
+
+#include <sys/queue.h>
+
+enum backend_setting_type_e
+{
+ setting_int,
+ setting_string
+};
+
+struct backend_setting_s
+{
+ union
+ {
+ backend_setting_int setting_int;
+ backend_setting_str setting_string;
+ };
+ enum backend_setting_type_e type;
+ SLIST_ENTRY(backend_setting_s) entries;
+};
+
+struct ws_session_list_entry_s
+{
+ ws_session *session;
+ ws_session_settings settings;
+ SLIST_ENTRY(ws_session_list_entry_s) entries;
+};
+
+typedef struct task_info_s
+{
+ /* name of backend handling this task */
+ char backend_name[64];
+
+ /* backend instance */
+ wrdp_backend_module *backend;
+
+ /* pointer to wrdp_thpool_task* used by some internals */
+ void *wrdp_thpool_task;
+
+ /* if true, all calls should return immediataely
+ * and do not touch any data */
+ bool stopped;
+
+ /* libev based session timer */
+ ev_timer *ev_timer_watcher;
+
+ /* task total run time, task idle time */
+ int64_t run_time, idle_time;
+
+ /* session related settings like timeouts */
+ ws_session_settings settings;
+
+} task_info;