diff options
Diffstat (limited to 'src/nxt_router_request.h')
-rw-r--r-- | src/nxt_router_request.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/nxt_router_request.h b/src/nxt_router_request.h new file mode 100644 index 00000000..c3d5767e --- /dev/null +++ b/src/nxt_router_request.h @@ -0,0 +1,71 @@ + +/* + * Copyright (C) NGINX, Inc. + */ + +#ifndef _NXT_ROUTER_REQUEST_H_INCLUDED_ +#define _NXT_ROUTER_REQUEST_H_INCLUDED_ + + +typedef struct nxt_msg_info_s { + nxt_buf_t *buf; + nxt_port_mmap_tracking_t tracking; + nxt_work_handler_t completion_handler; +} nxt_msg_info_t; + + +typedef struct nxt_request_app_link_s nxt_request_app_link_t; + + +typedef enum { + NXT_APR_NEW_PORT, + NXT_APR_REQUEST_FAILED, + NXT_APR_GOT_RESPONSE, + NXT_APR_UPGRADE, + NXT_APR_CLOSE, +} nxt_apr_action_t; + + +typedef struct { + uint32_t stream; + nxt_app_t *app; + + nxt_port_t *app_port; + nxt_apr_action_t apr_action; + + nxt_http_request_t *request; + nxt_msg_info_t msg_info; + nxt_request_app_link_t *req_app_link; +} nxt_request_rpc_data_t; + + +struct nxt_request_app_link_s { + uint32_t stream; + nxt_atomic_t use_count; + + nxt_port_t *app_port; + nxt_apr_action_t apr_action; + + nxt_port_t *reply_port; + nxt_http_request_t *request; + nxt_msg_info_t msg_info; + nxt_request_rpc_data_t *req_rpc_data; + + nxt_nsec_t res_time; + + nxt_queue_link_t link_app_requests; /* for nxt_app_t.requests */ + /* for nxt_port_t.pending_requests */ + nxt_queue_link_t link_port_pending; + nxt_queue_link_t link_app_pending; /* for nxt_app_t.pending */ + /* for nxt_port_t.active_websockets */ + nxt_queue_link_t link_port_websockets; + + nxt_mp_t *mem_pool; + nxt_work_t work; + + int err_code; + const char *err_str; +}; + + +#endif /* _NXT_ROUTER_REQUEST_H_INCLUDED_ */ |