nxt_port.h (1553:c3fad601f58b) nxt_port.h (1555:1d84b9e4b459)
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#ifndef _NXT_PORT_H_INCLUDED_
8#define _NXT_PORT_H_INCLUDED_

--- 28 unchanged lines hidden (view full) ---

37 nxt_port_handler_t remove_pid;
38
39 /* Stop process command. */
40 nxt_port_handler_t quit;
41
42 /* Request headers. */
43 nxt_port_handler_t req_headers;
44 nxt_port_handler_t req_headers_ack;
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#ifndef _NXT_PORT_H_INCLUDED_
8#define _NXT_PORT_H_INCLUDED_

--- 28 unchanged lines hidden (view full) ---

37 nxt_port_handler_t remove_pid;
38
39 /* Stop process command. */
40 nxt_port_handler_t quit;
41
42 /* Request headers. */
43 nxt_port_handler_t req_headers;
44 nxt_port_handler_t req_headers_ack;
45 nxt_port_handler_t req_body;
45
46 /* Websocket frame. */
47 nxt_port_handler_t websocket_frame;
48
49 /* Various data. */
50 nxt_port_handler_t data;
51
52 nxt_port_handler_t oosm;
53 nxt_port_handler_t shm_ack;
46
47 /* Websocket frame. */
48 nxt_port_handler_t websocket_frame;
49
50 /* Various data. */
51 nxt_port_handler_t data;
52
53 nxt_port_handler_t oosm;
54 nxt_port_handler_t shm_ack;
55 nxt_port_handler_t read_queue;
56 nxt_port_handler_t read_socket;
54};
55
56
57#define nxt_port_handler_idx(name) \
58 ( offsetof(nxt_port_handlers_t, name) / sizeof(nxt_port_handler_t) )
59
60#define nxt_msg_last(handler) \
61 (handler | NXT_PORT_MSG_LAST)

--- 24 unchanged lines hidden (view full) ---

86
87 _NXT_PORT_MSG_PROCESS_CREATED = nxt_port_handler_idx(process_created),
88 _NXT_PORT_MSG_PROCESS_READY = nxt_port_handler_idx(process_ready),
89 _NXT_PORT_MSG_REMOVE_PID = nxt_port_handler_idx(remove_pid),
90 _NXT_PORT_MSG_QUIT = nxt_port_handler_idx(quit),
91
92 _NXT_PORT_MSG_REQ_HEADERS = nxt_port_handler_idx(req_headers),
93 _NXT_PORT_MSG_REQ_HEADERS_ACK = nxt_port_handler_idx(req_headers_ack),
57};
58
59
60#define nxt_port_handler_idx(name) \
61 ( offsetof(nxt_port_handlers_t, name) / sizeof(nxt_port_handler_t) )
62
63#define nxt_msg_last(handler) \
64 (handler | NXT_PORT_MSG_LAST)

--- 24 unchanged lines hidden (view full) ---

89
90 _NXT_PORT_MSG_PROCESS_CREATED = nxt_port_handler_idx(process_created),
91 _NXT_PORT_MSG_PROCESS_READY = nxt_port_handler_idx(process_ready),
92 _NXT_PORT_MSG_REMOVE_PID = nxt_port_handler_idx(remove_pid),
93 _NXT_PORT_MSG_QUIT = nxt_port_handler_idx(quit),
94
95 _NXT_PORT_MSG_REQ_HEADERS = nxt_port_handler_idx(req_headers),
96 _NXT_PORT_MSG_REQ_HEADERS_ACK = nxt_port_handler_idx(req_headers_ack),
97 _NXT_PORT_MSG_REQ_BODY = nxt_port_handler_idx(req_body),
94 _NXT_PORT_MSG_WEBSOCKET = nxt_port_handler_idx(websocket_frame),
95
96 _NXT_PORT_MSG_DATA = nxt_port_handler_idx(data),
97
98 _NXT_PORT_MSG_OOSM = nxt_port_handler_idx(oosm),
99 _NXT_PORT_MSG_SHM_ACK = nxt_port_handler_idx(shm_ack),
98 _NXT_PORT_MSG_WEBSOCKET = nxt_port_handler_idx(websocket_frame),
99
100 _NXT_PORT_MSG_DATA = nxt_port_handler_idx(data),
101
102 _NXT_PORT_MSG_OOSM = nxt_port_handler_idx(oosm),
103 _NXT_PORT_MSG_SHM_ACK = nxt_port_handler_idx(shm_ack),
104 _NXT_PORT_MSG_READ_QUEUE = nxt_port_handler_idx(read_queue),
105 _NXT_PORT_MSG_READ_SOCKET = nxt_port_handler_idx(read_socket),
100
101 NXT_PORT_MSG_MAX = sizeof(nxt_port_handlers_t)
102 / sizeof(nxt_port_handler_t),
103
104 NXT_PORT_MSG_RPC_READY = _NXT_PORT_MSG_RPC_READY,
105 NXT_PORT_MSG_RPC_READY_LAST = nxt_msg_last(_NXT_PORT_MSG_RPC_READY),
106 NXT_PORT_MSG_RPC_ERROR = nxt_msg_last(_NXT_PORT_MSG_RPC_ERROR),
107 NXT_PORT_MSG_START_PROCESS = nxt_msg_last(_NXT_PORT_MSG_START_PROCESS),

--- 11 unchanged lines hidden (view full) ---

119 NXT_PORT_MSG_GET_MMAP = nxt_msg_last(_NXT_PORT_MSG_GET_MMAP),
120
121 NXT_PORT_MSG_PROCESS_CREATED = nxt_msg_last(_NXT_PORT_MSG_PROCESS_CREATED),
122 NXT_PORT_MSG_PROCESS_READY = nxt_msg_last(_NXT_PORT_MSG_PROCESS_READY),
123 NXT_PORT_MSG_QUIT = nxt_msg_last(_NXT_PORT_MSG_QUIT),
124 NXT_PORT_MSG_REMOVE_PID = nxt_msg_last(_NXT_PORT_MSG_REMOVE_PID),
125
126 NXT_PORT_MSG_REQ_HEADERS = _NXT_PORT_MSG_REQ_HEADERS,
106
107 NXT_PORT_MSG_MAX = sizeof(nxt_port_handlers_t)
108 / sizeof(nxt_port_handler_t),
109
110 NXT_PORT_MSG_RPC_READY = _NXT_PORT_MSG_RPC_READY,
111 NXT_PORT_MSG_RPC_READY_LAST = nxt_msg_last(_NXT_PORT_MSG_RPC_READY),
112 NXT_PORT_MSG_RPC_ERROR = nxt_msg_last(_NXT_PORT_MSG_RPC_ERROR),
113 NXT_PORT_MSG_START_PROCESS = nxt_msg_last(_NXT_PORT_MSG_START_PROCESS),

--- 11 unchanged lines hidden (view full) ---

125 NXT_PORT_MSG_GET_MMAP = nxt_msg_last(_NXT_PORT_MSG_GET_MMAP),
126
127 NXT_PORT_MSG_PROCESS_CREATED = nxt_msg_last(_NXT_PORT_MSG_PROCESS_CREATED),
128 NXT_PORT_MSG_PROCESS_READY = nxt_msg_last(_NXT_PORT_MSG_PROCESS_READY),
129 NXT_PORT_MSG_QUIT = nxt_msg_last(_NXT_PORT_MSG_QUIT),
130 NXT_PORT_MSG_REMOVE_PID = nxt_msg_last(_NXT_PORT_MSG_REMOVE_PID),
131
132 NXT_PORT_MSG_REQ_HEADERS = _NXT_PORT_MSG_REQ_HEADERS,
133 NXT_PORT_MSG_REQ_BODY = _NXT_PORT_MSG_REQ_BODY,
127 NXT_PORT_MSG_WEBSOCKET = _NXT_PORT_MSG_WEBSOCKET,
128 NXT_PORT_MSG_WEBSOCKET_LAST = nxt_msg_last(_NXT_PORT_MSG_WEBSOCKET),
129
130 NXT_PORT_MSG_DATA = _NXT_PORT_MSG_DATA,
131 NXT_PORT_MSG_DATA_LAST = nxt_msg_last(_NXT_PORT_MSG_DATA),
132
133 NXT_PORT_MSG_OOSM = nxt_msg_last(_NXT_PORT_MSG_OOSM),
134 NXT_PORT_MSG_SHM_ACK = nxt_msg_last(_NXT_PORT_MSG_SHM_ACK),
134 NXT_PORT_MSG_WEBSOCKET = _NXT_PORT_MSG_WEBSOCKET,
135 NXT_PORT_MSG_WEBSOCKET_LAST = nxt_msg_last(_NXT_PORT_MSG_WEBSOCKET),
136
137 NXT_PORT_MSG_DATA = _NXT_PORT_MSG_DATA,
138 NXT_PORT_MSG_DATA_LAST = nxt_msg_last(_NXT_PORT_MSG_DATA),
139
140 NXT_PORT_MSG_OOSM = nxt_msg_last(_NXT_PORT_MSG_OOSM),
141 NXT_PORT_MSG_SHM_ACK = nxt_msg_last(_NXT_PORT_MSG_SHM_ACK),
142 NXT_PORT_MSG_READ_QUEUE = _NXT_PORT_MSG_READ_QUEUE,
143 NXT_PORT_MSG_READ_SOCKET = _NXT_PORT_MSG_READ_SOCKET,
135} nxt_port_msg_type_t;
136
137
138/* Passed as a first iov chunk. */
139typedef struct {
140 uint32_t stream;
141 nxt_pid_t pid;
142 nxt_port_id_t reply_port;

--- 88 unchanged lines hidden (view full) ---

231 nxt_lvlhsh_t rpc_streams; /* stream to nxt_port_rpc_reg_t */
232 nxt_lvlhsh_t rpc_peers; /* peer to queue of nxt_port_rpc_reg_t */
233
234 nxt_lvlhsh_t frags;
235
236 nxt_atomic_t use_count;
237
238 nxt_process_type_t type;
144} nxt_port_msg_type_t;
145
146
147/* Passed as a first iov chunk. */
148typedef struct {
149 uint32_t stream;
150 nxt_pid_t pid;
151 nxt_port_id_t reply_port;

--- 88 unchanged lines hidden (view full) ---

240 nxt_lvlhsh_t rpc_streams; /* stream to nxt_port_rpc_reg_t */
241 nxt_lvlhsh_t rpc_peers; /* peer to queue of nxt_port_rpc_reg_t */
242
243 nxt_lvlhsh_t frags;
244
245 nxt_atomic_t use_count;
246
247 nxt_process_type_t type;
248
249 nxt_fd_t queue_fd;
250 void *queue;
251
252 void *socket_msg;
253 int from_socket;
239};
240
241
242typedef struct {
243 nxt_port_id_t id;
244 nxt_pid_t pid;
245 size_t max_size;
246 size_t max_share;

--- 34 unchanged lines hidden (view full) ---

281nxt_int_t nxt_port_socket_init(nxt_task_t *task, nxt_port_t *port,
282 size_t max_size);
283void nxt_port_destroy(nxt_port_t *port);
284void nxt_port_close(nxt_task_t *task, nxt_port_t *port);
285void nxt_port_write_enable(nxt_task_t *task, nxt_port_t *port);
286void nxt_port_write_close(nxt_port_t *port);
287void nxt_port_read_enable(nxt_task_t *task, nxt_port_t *port);
288void nxt_port_read_close(nxt_port_t *port);
254};
255
256
257typedef struct {
258 nxt_port_id_t id;
259 nxt_pid_t pid;
260 size_t max_size;
261 size_t max_share;

--- 34 unchanged lines hidden (view full) ---

296nxt_int_t nxt_port_socket_init(nxt_task_t *task, nxt_port_t *port,
297 size_t max_size);
298void nxt_port_destroy(nxt_port_t *port);
299void nxt_port_close(nxt_task_t *task, nxt_port_t *port);
300void nxt_port_write_enable(nxt_task_t *task, nxt_port_t *port);
301void nxt_port_write_close(nxt_port_t *port);
302void nxt_port_read_enable(nxt_task_t *task, nxt_port_t *port);
303void nxt_port_read_close(nxt_port_t *port);
289nxt_int_t nxt_port_socket_twrite(nxt_task_t *task, nxt_port_t *port,
290 nxt_uint_t type, nxt_fd_t fd, uint32_t stream, nxt_port_id_t reply_port,
291 nxt_buf_t *b, void *tracking);
304nxt_int_t nxt_port_socket_write2(nxt_task_t *task, nxt_port_t *port,
305 nxt_uint_t type, nxt_fd_t fd, nxt_fd_t fd2, uint32_t stream,
306 nxt_port_id_t reply_port, nxt_buf_t *b);
292
293nxt_inline nxt_int_t
294nxt_port_socket_write(nxt_task_t *task, nxt_port_t *port,
295 nxt_uint_t type, nxt_fd_t fd, uint32_t stream, nxt_port_id_t reply_port,
296 nxt_buf_t *b)
297{
307
308nxt_inline nxt_int_t
309nxt_port_socket_write(nxt_task_t *task, nxt_port_t *port,
310 nxt_uint_t type, nxt_fd_t fd, uint32_t stream, nxt_port_id_t reply_port,
311 nxt_buf_t *b)
312{
298 return nxt_port_socket_twrite(task, port, type, fd, stream, reply_port, b,
299 NULL);
313 return nxt_port_socket_write2(task, port, type, fd, -1, stream, reply_port,
314 b);
300}
301
302void nxt_port_enable(nxt_task_t *task, nxt_port_t *port,
303 const nxt_port_handlers_t *handlers);
304nxt_int_t nxt_port_send_port(nxt_task_t *task, nxt_port_t *port,
305 nxt_port_t *new_port, uint32_t stream);
306void nxt_port_change_log_file(nxt_task_t *task, nxt_runtime_t *rt,
307 nxt_uint_t slot, nxt_fd_t fd);

--- 21 unchanged lines hidden ---
315}
316
317void nxt_port_enable(nxt_task_t *task, nxt_port_t *port,
318 const nxt_port_handlers_t *handlers);
319nxt_int_t nxt_port_send_port(nxt_task_t *task, nxt_port_t *port,
320 nxt_port_t *new_port, uint32_t stream);
321void nxt_port_change_log_file(nxt_task_t *task, nxt_runtime_t *rt,
322 nxt_uint_t slot, nxt_fd_t fd);

--- 21 unchanged lines hidden ---