xref: /unit/src/nxt_http_source.h (revision 0)
1*0Sigor@sysoev.ru 
2*0Sigor@sysoev.ru /*
3*0Sigor@sysoev.ru  * Copyright (C) Igor Sysoev
4*0Sigor@sysoev.ru  * Copyright (C) NGINX, Inc.
5*0Sigor@sysoev.ru  */
6*0Sigor@sysoev.ru 
7*0Sigor@sysoev.ru #ifndef _NXT_HTTP_SOURCE_H_INCLUDED_
8*0Sigor@sysoev.ru #define _NXT_HTTP_SOURCE_H_INCLUDED_
9*0Sigor@sysoev.ru 
10*0Sigor@sysoev.ru 
11*0Sigor@sysoev.ru typedef struct {
12*0Sigor@sysoev.ru     nxt_str_t                          copy;
13*0Sigor@sysoev.ru     uintptr_t                          data[3];
14*0Sigor@sysoev.ru } nxt_http_source_request_t;
15*0Sigor@sysoev.ru 
16*0Sigor@sysoev.ru 
17*0Sigor@sysoev.ru typedef struct nxt_http_source_s  nxt_http_source_t;
18*0Sigor@sysoev.ru typedef nxt_int_t (*nxt_http_source_request_create_t)(nxt_http_source_t *hs);
19*0Sigor@sysoev.ru 
20*0Sigor@sysoev.ru 
21*0Sigor@sysoev.ru struct nxt_http_source_s {
22*0Sigor@sysoev.ru     nxt_source_hook_t                  query;
23*0Sigor@sysoev.ru     nxt_source_hook_t                  *next;
24*0Sigor@sysoev.ru 
25*0Sigor@sysoev.ru     nxt_upstream_source_t              *upstream;
26*0Sigor@sysoev.ru 
27*0Sigor@sysoev.ru     nxt_http_source_request_create_t   request_create;
28*0Sigor@sysoev.ru 
29*0Sigor@sysoev.ru     nxt_upstream_header_in_t           header_in;
30*0Sigor@sysoev.ru 
31*0Sigor@sysoev.ru     nxt_buf_t                          *rest;
32*0Sigor@sysoev.ru 
33*0Sigor@sysoev.ru     uint32_t                           chunked;  /* 1 bit */
34*0Sigor@sysoev.ru 
35*0Sigor@sysoev.ru     union {
36*0Sigor@sysoev.ru         nxt_http_source_request_t      request;
37*0Sigor@sysoev.ru         nxt_http_status_parse_t        status_parse;
38*0Sigor@sysoev.ru         nxt_http_split_header_parse_t  header;
39*0Sigor@sysoev.ru     } u;
40*0Sigor@sysoev.ru };
41*0Sigor@sysoev.ru 
42*0Sigor@sysoev.ru 
43*0Sigor@sysoev.ru NXT_EXPORT void nxt_http_source_handler(nxt_upstream_source_t *us,
44*0Sigor@sysoev.ru     nxt_http_source_request_create_t request_create);
45*0Sigor@sysoev.ru NXT_EXPORT nxt_int_t nxt_http_source_hash_create(nxt_mem_pool_t *mp,
46*0Sigor@sysoev.ru     nxt_lvlhsh_t *lh);
47*0Sigor@sysoev.ru 
48*0Sigor@sysoev.ru 
49*0Sigor@sysoev.ru #endif /* _NXT_HTTP_SOURCE_H_INCLUDED_ */
50