xref: /unit/src/nxt_h1proto.h (revision 1505:d18f2b38596b)
11131Smax.romanov@nginx.com 
21131Smax.romanov@nginx.com /*
31131Smax.romanov@nginx.com  * Copyright (C) NGINX, Inc.
41131Smax.romanov@nginx.com  */
51131Smax.romanov@nginx.com 
61131Smax.romanov@nginx.com #ifndef _NXT_H1PROTO_H_INCLUDED_
71131Smax.romanov@nginx.com #define _NXT_H1PROTO_H_INCLUDED_
81131Smax.romanov@nginx.com 
91131Smax.romanov@nginx.com 
101131Smax.romanov@nginx.com #include <nxt_main.h>
111131Smax.romanov@nginx.com #include <nxt_http_parse.h>
121131Smax.romanov@nginx.com #include <nxt_http.h>
131131Smax.romanov@nginx.com #include <nxt_router.h>
141131Smax.romanov@nginx.com 
151131Smax.romanov@nginx.com 
161131Smax.romanov@nginx.com typedef struct nxt_h1p_websocket_timer_s nxt_h1p_websocket_timer_t;
171131Smax.romanov@nginx.com 
181131Smax.romanov@nginx.com 
191131Smax.romanov@nginx.com struct nxt_h1proto_s {
201131Smax.romanov@nginx.com     nxt_http_request_parse_t  parser;
21*1505Sigor@sysoev.ru     nxt_http_chunk_parse_t    chunked_parse;
22*1505Sigor@sysoev.ru     nxt_off_t                 remainder;
231131Smax.romanov@nginx.com 
241131Smax.romanov@nginx.com     uint8_t                   nbuffers;
251270Sigor@sysoev.ru     uint8_t                   header_buffer_slot;
261270Sigor@sysoev.ru     uint8_t                   large_buffer_slot;
271131Smax.romanov@nginx.com     uint8_t                   keepalive;            /* 1 bit  */
281131Smax.romanov@nginx.com     uint8_t                   chunked;              /* 1 bit  */
291131Smax.romanov@nginx.com     uint8_t                   websocket;            /* 1 bit  */
301131Smax.romanov@nginx.com     uint8_t                   connection_upgrade;   /* 1 bit  */
311131Smax.romanov@nginx.com     uint8_t                   upgrade_websocket;    /* 1 bit  */
321131Smax.romanov@nginx.com     uint8_t                   websocket_version_ok; /* 1 bit  */
331131Smax.romanov@nginx.com     nxt_http_te_t             transfer_encoding:8;  /* 2 bits */
341131Smax.romanov@nginx.com 
351131Smax.romanov@nginx.com     uint8_t                   websocket_cont_expected;  /* 1 bit */
361131Smax.romanov@nginx.com     uint8_t                   websocket_closed;         /* 1 bit */
371131Smax.romanov@nginx.com 
381131Smax.romanov@nginx.com     uint32_t                  header_size;
391131Smax.romanov@nginx.com 
401131Smax.romanov@nginx.com     nxt_http_field_t          *websocket_key;
411131Smax.romanov@nginx.com     nxt_h1p_websocket_timer_t *websocket_timer;
421131Smax.romanov@nginx.com 
431131Smax.romanov@nginx.com     nxt_http_request_t        *request;
441131Smax.romanov@nginx.com     nxt_buf_t                 *buffers;
451318Smax.romanov@nginx.com 
461318Smax.romanov@nginx.com     nxt_buf_t                 **conn_write_tail;
471131Smax.romanov@nginx.com     /*
481131Smax.romanov@nginx.com      * All fields before the conn field will
491131Smax.romanov@nginx.com      * be zeroed in a keep-alive connection.
501131Smax.romanov@nginx.com      */
511131Smax.romanov@nginx.com     nxt_conn_t                *conn;
521131Smax.romanov@nginx.com };
531131Smax.romanov@nginx.com 
541131Smax.romanov@nginx.com #endif  /* _NXT_H1PROTO_H_INCLUDED_ */
55