summaryrefslogtreecommitdiff
path: root/src/core/task.h
blob: 6677739838143e3f3de2f86f32d732379d761345 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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;