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