summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_main.h
blob: a7e0c283ddeeee92605bd395287ea6aaab90ca6c (plain) (blame)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171

/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) NGINX, Inc.
 */

#ifndef _NXT_LIB_H_INCLUDED_
#define _NXT_LIB_H_INCLUDED_


#include <nxt_auto_config.h>
#include <nxt_version.h>

#define NXT_NAME                     "Unit"
#define NXT_SERVER                   NXT_NAME "/" NXT_VERSION

typedef struct nxt_port_s            nxt_port_t;
typedef struct nxt_task_s            nxt_task_t;
typedef struct nxt_port_recv_msg_s   nxt_port_recv_msg_t;
typedef void (*nxt_port_handler_t)(nxt_task_t *task, nxt_port_recv_msg_t *msg);
typedef struct nxt_port_handlers_s   nxt_port_handlers_t;
typedef struct nxt_sig_event_s       nxt_sig_event_t;
typedef struct nxt_runtime_s         nxt_runtime_t;

typedef struct nxt_thread_s          nxt_thread_t;
typedef struct nxt_event_engine_s    nxt_event_engine_t;
typedef struct nxt_log_s             nxt_log_t;
typedef struct nxt_thread_pool_s     nxt_thread_pool_t;

typedef void (*nxt_work_handler_t)(nxt_task_t *task, void *obj, void *data);

#include <nxt_unix.h>
#include <nxt_clang.h>
#include <nxt_types.h>
#include <nxt_time.h>
#include <nxt_mp.h>
#include <nxt_array.h>

typedef uint16_t                     nxt_port_id_t;

#include <nxt_queue.h>

#include <nxt_thread_id.h>

#include <nxt_errno.h>
#include <nxt_file.h>

#include <nxt_random.h>
#include <nxt_string.h>
#include <nxt_lvlhsh.h>
#include <nxt_atomic.h>
#include <nxt_spinlock.h>
#include <nxt_work_queue.h>
#include <nxt_log.h>
#include <nxt_thread_time.h>
#include <nxt_rbtree.h>
#include <nxt_timer.h>
#include <nxt_fiber.h>
#include <nxt_thread.h>
#include <nxt_process_type.h>
#include <nxt_capability.h>
#include <nxt_credential.h>
#include <nxt_fs_mount.h>
#include <nxt_fs.h>
#include <nxt_process.h>
#include <nxt_utf8.h>
#include <nxt_file_name.h>

#include <nxt_sprintf.h>
#include <nxt_parse.h>
#include <nxt_var.h>
#include <nxt_tstr.h>


/* TODO: remove unused */

typedef struct nxt_fd_event_s           nxt_fd_event_t;
typedef struct nxt_sockaddr_s           nxt_sockaddr_t;


#include <nxt_malloc.h>
#include <nxt_mem_map.h>
#include <nxt_socket.h>
#include <nxt_dyld.h>


typedef void *(*nxt_mem_proto_alloc_t)(void *pool, size_t size);
typedef void (*nxt_mem_proto_free_t)(void *pool, void *p);

typedef struct {
    nxt_mem_proto_alloc_t  alloc;
    nxt_mem_proto_free_t   free;
} nxt_mem_proto_t;


#include <nxt_mem_zone.h>
#include <nxt_signal.h>
#include <nxt_semaphore.h>

#include <nxt_djb_hash.h>
#include <nxt_murmur_hash.h>
#include <nxt_hash.h>

#include <nxt_sort.h>
#include <nxt_vector.h>
#include <nxt_list.h>

#include <nxt_service.h>

typedef struct nxt_buf_s                nxt_buf_t;
#include <nxt_buf.h>
#include <nxt_buf_pool.h>
#include <nxt_recvbuf.h>

typedef struct nxt_conn_s               nxt_conn_t;
#include <nxt_sendbuf.h>

#include <nxt_log_moderation.h>

#if (NXT_TLS)
#include <nxt_tls.h>
#endif


#define nxt_thread()                                                          \
    (nxt_thread_t *) nxt_thread_get_data(nxt_thread_context)

nxt_thread_extern_data(nxt_thread_t, nxt_thread_context);


#include <nxt_thread_log.h>

#include <nxt_fd_event.h>
#include <nxt_file_event.h>

#include <nxt_port.h>
#include <nxt_port_memory.h>
#include <nxt_port_rpc.h>
#include <nxt_thread_pool.h>


typedef void (*nxt_event_conn_handler_t)(nxt_thread_t *thr, nxt_conn_t *c);
#include <nxt_listen_socket.h>

#include <nxt_conn.h>
#include <nxt_event_engine.h>

#include <nxt_job.h>

#include <nxt_sockaddr.h>

#include <nxt_http_parse.h>
#include <nxt_runtime.h>
#include <nxt_port_hash.h>


/*
 * The envp argument must be &environ if application may
 * change its process title with nxt_process_title().
 */
NXT_EXPORT nxt_int_t nxt_lib_start(const char *app, char **argv, char ***envp);
NXT_EXPORT void nxt_lib_stop(void);


NXT_EXPORT extern nxt_uint_t    nxt_ncpu;
NXT_EXPORT extern nxt_uint_t    nxt_pagesize;
NXT_EXPORT extern nxt_task_t    nxt_main_task;
NXT_EXPORT extern nxt_atomic_t  nxt_task_ident;


#endif /* _NXT_LIB_H_INCLUDED_ */