xref: /unit/src/nxt_port.h (revision 11)
1*11Sigor@sysoev.ru 
2*11Sigor@sysoev.ru /*
3*11Sigor@sysoev.ru  * Copyright (C) Igor Sysoev
4*11Sigor@sysoev.ru  * Copyright (C) NGINX, Inc.
5*11Sigor@sysoev.ru  */
6*11Sigor@sysoev.ru 
7*11Sigor@sysoev.ru #ifndef _NXT_PORT_H_INCLUDED_
8*11Sigor@sysoev.ru #define _NXT_PORT_H_INCLUDED_
9*11Sigor@sysoev.ru 
10*11Sigor@sysoev.ru 
11*11Sigor@sysoev.ru #define NXT_PORT_MSG_MAX  NXT_PORT_MSG_DATA
12*11Sigor@sysoev.ru 
13*11Sigor@sysoev.ru typedef enum {
14*11Sigor@sysoev.ru     NXT_PORT_MSG_QUIT = 0,
15*11Sigor@sysoev.ru     NXT_PORT_MSG_NEW_PORT,
16*11Sigor@sysoev.ru     NXT_PORT_MSG_PORTGE_FILE,
17*11Sigor@sysoev.ru     NXT_PORT_MSG_DATA,
18*11Sigor@sysoev.ru } nxt_port_msg_type_e;
19*11Sigor@sysoev.ru 
20*11Sigor@sysoev.ru 
21*11Sigor@sysoev.ru typedef struct {
22*11Sigor@sysoev.ru     nxt_pid_t   pid;
23*11Sigor@sysoev.ru     uint32_t    engine;
24*11Sigor@sysoev.ru     uint32_t    generation;
25*11Sigor@sysoev.ru     nxt_port_t  *port;
26*11Sigor@sysoev.ru } nxt_process_port_t;
27*11Sigor@sysoev.ru 
28*11Sigor@sysoev.ru 
29*11Sigor@sysoev.ru typedef struct {
30*11Sigor@sysoev.ru     nxt_pid_t   pid;
31*11Sigor@sysoev.ru     uint32_t    engine;
32*11Sigor@sysoev.ru     size_t      max_size;
33*11Sigor@sysoev.ru     size_t      max_share;
34*11Sigor@sysoev.ru } nxt_proc_msg_new_port_t;
35*11Sigor@sysoev.ru 
36*11Sigor@sysoev.ru 
37*11Sigor@sysoev.ru /*
38*11Sigor@sysoev.ru  * nxt_process_port_data_t is allocaiton size
39*11Sigor@sysoev.ru  * enabling effective reuse of memory pool cache.
40*11Sigor@sysoev.ru  */
41*11Sigor@sysoev.ru typedef union {
42*11Sigor@sysoev.ru     nxt_buf_t                buf;
43*11Sigor@sysoev.ru     nxt_proc_msg_new_port_t  new_port;
44*11Sigor@sysoev.ru } nxt_process_port_data_t;
45*11Sigor@sysoev.ru 
46*11Sigor@sysoev.ru 
47*11Sigor@sysoev.ru typedef void (*nxt_process_port_handler_t)(nxt_task_t *task,
48*11Sigor@sysoev.ru     nxt_port_recv_msg_t *msg);
49*11Sigor@sysoev.ru 
50*11Sigor@sysoev.ru 
51*11Sigor@sysoev.ru void nxt_process_port_create(nxt_thread_t *thr, nxt_process_port_t *proc,
52*11Sigor@sysoev.ru     nxt_process_port_handler_t *handlers);
53*11Sigor@sysoev.ru void nxt_process_port_write(nxt_task_t *task, nxt_cycle_t *cycle,
54*11Sigor@sysoev.ru     nxt_uint_t type, nxt_fd_t fd, uint32_t stream, nxt_buf_t *b);
55*11Sigor@sysoev.ru void nxt_process_new_port(nxt_task_t *task, nxt_cycle_t *cycle,
56*11Sigor@sysoev.ru     nxt_process_port_t *proc);
57*11Sigor@sysoev.ru void nxt_process_port_change_log_file(nxt_task_t *task, nxt_cycle_t *cycle,
58*11Sigor@sysoev.ru     nxt_uint_t slot, nxt_fd_t fd);
59*11Sigor@sysoev.ru 
60*11Sigor@sysoev.ru void nxt_process_port_quit_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg);
61*11Sigor@sysoev.ru void nxt_process_port_new_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg);
62*11Sigor@sysoev.ru void nxt_process_port_change_log_file_handler(nxt_task_t *task,
63*11Sigor@sysoev.ru     nxt_port_recv_msg_t *msg);
64*11Sigor@sysoev.ru void nxt_process_port_data_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg);
65*11Sigor@sysoev.ru void nxt_process_port_empty_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg);
66*11Sigor@sysoev.ru 
67*11Sigor@sysoev.ru 
68*11Sigor@sysoev.ru #endif /* _NXT_PORT_H_INCLUDED_ */
69