xref: /unit/src/nxt_runtime.h (revision 20:4dc92b438f58)
1 
2 /*
3  * Copyright (C) Igor Sysoev
4  * Copyright (C) Valentin V. Bartenev
5  * Copyright (C) NGINX, Inc.
6  */
7 
8 #ifndef _NXT_RUNTIME_H_INCLUDED_
9 #define _NXT_RUNTIME_H_INCLUDED_
10 
11 
12 typedef void (*nxt_runtime_cont_t)(nxt_task_t *task);
13 
14 
15 struct nxt_runtime_s {
16     nxt_mem_pool_t         *mem_pool;
17 
18     nxt_array_t            *inherited_sockets;  /* of nxt_listen_socket_t */
19     nxt_array_t            *listen_sockets;     /* of nxt_listen_socket_t */
20 
21     nxt_array_t            *services;           /* of nxt_service_t */
22     nxt_array_t            *engines;            /* of nxt_event_engine_t */
23 
24     nxt_runtime_cont_t     start;
25 
26     nxt_str_t              *conf_prefix;
27     nxt_str_t              *prefix;
28 
29     nxt_str_t              hostname;
30 
31     nxt_file_name_t        *pid_file;
32 
33 #if (NXT_THREADS)
34     nxt_array_t            *thread_pools;       /* of nxt_thread_pool_t */
35     nxt_runtime_cont_t     continuation;
36 #endif
37 
38     nxt_array_t            *processes;          /* of nxt_process_t */
39 
40     nxt_list_t             *log_files;          /* of nxt_file_t */
41 
42     uint32_t               last_engine_id;
43 
44     nxt_process_type_t     type;
45 
46     nxt_timer_t            timer;
47 
48     uint8_t                daemon;
49     uint8_t                batch;
50     uint8_t                master_process;
51     const char             *engine;
52     uint32_t               engine_connections;
53     uint32_t               worker_processes;
54     uint32_t               auxiliary_threads;
55     nxt_user_cred_t        user_cred;
56     const char             *group;
57     const char             *pid;
58     const char             *error_log;
59 
60     nxt_sockaddr_t         *controller_listen;
61     nxt_listen_socket_t    *controller_socket;
62     nxt_str_t              upstream;
63 };
64 
65 
66 
67 typedef nxt_int_t (*nxt_module_init_t)(nxt_thread_t *thr, nxt_runtime_t *rt);
68 
69 
70 nxt_int_t nxt_runtime_create(nxt_task_t *task);
71 void nxt_runtime_quit(nxt_task_t *task);
72 
73 void nxt_runtime_event_engine_free(nxt_runtime_t *rt);
74 
75 #if (NXT_THREADS)
76 nxt_int_t nxt_runtime_thread_pool_create(nxt_thread_t *thr, nxt_runtime_t *rt,
77     nxt_uint_t max_threads, nxt_nsec_t timeout);
78 #endif
79 
80 
81 nxt_process_t *nxt_runtime_new_process(nxt_runtime_t *rt);
82 
83 /* STUB */
84 nxt_int_t nxt_runtime_controller_socket(nxt_task_t *task, nxt_runtime_t *rt);
85 
86 nxt_str_t *nxt_current_directory(nxt_mem_pool_t *mp);
87 
88 nxt_listen_socket_t *nxt_runtime_listen_socket_add(nxt_runtime_t *rt,
89     nxt_sockaddr_t *sa);
90 nxt_int_t nxt_runtime_listen_sockets_create(nxt_task_t *task,
91     nxt_runtime_t *rt);
92 nxt_int_t nxt_runtime_listen_sockets_enable(nxt_task_t *task,
93     nxt_runtime_t *rt);
94 nxt_file_t *nxt_runtime_log_file_add(nxt_runtime_t *rt, nxt_str_t *name);
95 
96 /* STUB */
97 void nxt_cdecl nxt_log_time_handler(nxt_uint_t level, nxt_log_t *log,
98     const char *fmt, ...);
99 
100 void nxt_stream_connection_init(nxt_task_t *task, void *obj, void *data);
101 nxt_int_t nxt_app_start(nxt_task_t *task, nxt_runtime_t *rt);
102 
103 
104 extern nxt_module_init_t  nxt_init_modules[];
105 extern nxt_uint_t         nxt_init_modules_n;
106 
107 
108 #endif /* _NXT_RUNTIME_H_INCLIDED_ */
109