1e18a033bSKonstantin Ananyev
2e18a033bSKonstantin Ananyev/*
3e18a033bSKonstantin Ananyev * Copyright (C) Igor Sysoev
4e18a033bSKonstantin Ananyev * Copyright (C) Nginx, Inc.
5e18a033bSKonstantin Ananyev */
6e18a033bSKonstantin Ananyev
7e18a033bSKonstantin Ananyev
8e18a033bSKonstantin Ananyev#ifndef _NGX_HTTP_PERL_MODULE_H_INCLUDED_
9e18a033bSKonstantin Ananyev#define _NGX_HTTP_PERL_MODULE_H_INCLUDED_
10e18a033bSKonstantin Ananyev
11e18a033bSKonstantin Ananyev
12e18a033bSKonstantin Ananyev#include <ngx_config.h>
13e18a033bSKonstantin Ananyev#include <ngx_core.h>
14e18a033bSKonstantin Ananyev#include <ngx_http.h>
15e18a033bSKonstantin Ananyev#include <nginx.h>
16e18a033bSKonstantin Ananyev
17e18a033bSKonstantin Ananyev#include <EXTERN.h>
18e18a033bSKonstantin Ananyev#include <perl.h>
19e18a033bSKonstantin Ananyev
20e18a033bSKonstantin Ananyev
21e18a033bSKonstantin Ananyevtypedef ngx_http_request_t   *nginx;
22e18a033bSKonstantin Ananyev
23e18a033bSKonstantin Ananyevtypedef struct {
24e18a033bSKonstantin Ananyev    ngx_str_t                 filename;
25e18a033bSKonstantin Ananyev    ngx_str_t                 redirect_uri;
26e18a033bSKonstantin Ananyev    ngx_str_t                 redirect_args;
27e18a033bSKonstantin Ananyev
28e18a033bSKonstantin Ananyev    SV                       *next;
29e18a033bSKonstantin Ananyev
30e18a033bSKonstantin Ananyev    ngx_uint_t                done;       /* unsigned  done:1; */
31e18a033bSKonstantin Ananyev
32e18a033bSKonstantin Ananyev    ngx_array_t              *variables;  /* array of ngx_http_perl_var_t */
33e18a033bSKonstantin Ananyev
34e18a033bSKonstantin Ananyev#if (NGX_HTTP_SSI)
35e18a033bSKonstantin Ananyev    ngx_http_ssi_ctx_t       *ssi;
36e18a033bSKonstantin Ananyev#endif
37e18a033bSKonstantin Ananyev} ngx_http_perl_ctx_t;
38e18a033bSKonstantin Ananyev
39e18a033bSKonstantin Ananyev
40e18a033bSKonstantin Ananyevtypedef struct {
41e18a033bSKonstantin Ananyev    ngx_uint_t    hash;
42e18a033bSKonstantin Ananyev    ngx_str_t     name;
43e18a033bSKonstantin Ananyev    ngx_str_t     value;
44e18a033bSKonstantin Ananyev} ngx_http_perl_var_t;
45e18a033bSKonstantin Ananyev
46e18a033bSKonstantin Ananyev
47e18a033bSKonstantin Ananyevextern ngx_module_t  ngx_http_perl_module;
48e18a033bSKonstantin Ananyev
49e18a033bSKonstantin Ananyev
50e18a033bSKonstantin Ananyev/*
51e18a033bSKonstantin Ananyev * workaround for "unused variable `Perl___notused'" warning
52e18a033bSKonstantin Ananyev * when building with perl 5.6.1
53e18a033bSKonstantin Ananyev */
54e18a033bSKonstantin Ananyev#ifndef PERL_IMPLICIT_CONTEXT
55e18a033bSKonstantin Ananyev#undef  dTHXa
56e18a033bSKonstantin Ananyev#define dTHXa(a)
57e18a033bSKonstantin Ananyev#endif
58e18a033bSKonstantin Ananyev
59e18a033bSKonstantin Ananyev
60e18a033bSKonstantin Ananyevextern void boot_DynaLoader(pTHX_ CV* cv);
61e18a033bSKonstantin Ananyev
62e18a033bSKonstantin Ananyev
63e18a033bSKonstantin Ananyevvoid ngx_http_perl_handle_request(ngx_http_request_t *r);
64e18a033bSKonstantin Ananyevvoid ngx_http_perl_sleep_handler(ngx_http_request_t *r);
65e18a033bSKonstantin Ananyev
66e18a033bSKonstantin Ananyev
67e18a033bSKonstantin Ananyev#endif /* _NGX_HTTP_PERL_MODULE_H_INCLUDED_ */
68