xref: /unit/src/nxt_application.h (revision 1320)
10Sigor@sysoev.ru 
20Sigor@sysoev.ru /*
384Smax.romanov@nginx.com  * Copyright (C) Max Romanov
40Sigor@sysoev.ru  * Copyright (C) Valentin V. Bartenev
50Sigor@sysoev.ru  * Copyright (C) NGINX, Inc.
60Sigor@sysoev.ru  */
70Sigor@sysoev.ru 
80Sigor@sysoev.ru #ifndef _NXT_APPLICATION_H_INCLUDED_
90Sigor@sysoev.ru #define _NXT_APPLICATION_H_INCLUDED_
100Sigor@sysoev.ru 
110Sigor@sysoev.ru 
12678Svbart@nginx.com #include <nxt_conf.h>
13678Svbart@nginx.com 
14743Smax.romanov@nginx.com #include <nxt_unit_typedefs.h>
15743Smax.romanov@nginx.com 
16678Svbart@nginx.com 
17133Sigor@sysoev.ru typedef enum {
18804Svbart@nginx.com     NXT_APP_EXTERNAL,
19141Smax.romanov@nginx.com     NXT_APP_PYTHON,
20133Sigor@sysoev.ru     NXT_APP_PHP,
21510Salexander.borisov@nginx.com     NXT_APP_PERL,
22584Salexander.borisov@nginx.com     NXT_APP_RUBY,
23977Smax.romanov@gmail.com     NXT_APP_JAVA,
24141Smax.romanov@nginx.com 
25216Sigor@sysoev.ru     NXT_APP_UNKNOWN,
26133Sigor@sysoev.ru } nxt_app_type_t;
27133Sigor@sysoev.ru 
28133Sigor@sysoev.ru 
29216Sigor@sysoev.ru typedef struct nxt_app_module_s  nxt_app_module_t;
30216Sigor@sysoev.ru 
31216Sigor@sysoev.ru 
32216Sigor@sysoev.ru typedef struct {
33356Svbart@nginx.com     nxt_app_type_t            type;
34354Svbart@nginx.com     u_char                    *version;
35216Sigor@sysoev.ru     char                      *file;
36743Smax.romanov@nginx.com     nxt_app_module_t          *module;
37216Sigor@sysoev.ru } nxt_app_lang_module_t;
38216Sigor@sysoev.ru 
39216Sigor@sysoev.ru 
40141Smax.romanov@nginx.com typedef struct nxt_common_app_conf_s nxt_common_app_conf_t;
41141Smax.romanov@nginx.com 
42141Smax.romanov@nginx.com 
43141Smax.romanov@nginx.com typedef struct {
44804Svbart@nginx.com     char                       *executable;
45804Svbart@nginx.com     nxt_conf_value_t           *arguments;
46804Svbart@nginx.com } nxt_external_app_conf_t;
47804Svbart@nginx.com 
48804Svbart@nginx.com 
49804Svbart@nginx.com typedef struct {
50394Smax.romanov@nginx.com     char       *home;
51141Smax.romanov@nginx.com     nxt_str_t  path;
52141Smax.romanov@nginx.com     nxt_str_t  module;
53141Smax.romanov@nginx.com } nxt_python_app_conf_t;
54141Smax.romanov@nginx.com 
55141Smax.romanov@nginx.com 
56141Smax.romanov@nginx.com typedef struct {
57687Svbart@nginx.com     char                       *root;
58687Svbart@nginx.com     nxt_str_t                  script;
59687Svbart@nginx.com     nxt_str_t                  index;
60687Svbart@nginx.com     nxt_conf_value_t           *options;
61141Smax.romanov@nginx.com } nxt_php_app_conf_t;
62141Smax.romanov@nginx.com 
63141Smax.romanov@nginx.com 
64141Smax.romanov@nginx.com typedef struct {
65510Salexander.borisov@nginx.com     char       *script;
66510Salexander.borisov@nginx.com } nxt_perl_app_conf_t;
67510Salexander.borisov@nginx.com 
68510Salexander.borisov@nginx.com 
69584Salexander.borisov@nginx.com typedef struct {
70584Salexander.borisov@nginx.com     nxt_str_t  script;
71584Salexander.borisov@nginx.com } nxt_ruby_app_conf_t;
72584Salexander.borisov@nginx.com 
73584Salexander.borisov@nginx.com 
74977Smax.romanov@gmail.com typedef struct {
75977Smax.romanov@gmail.com     nxt_conf_value_t           *classpath;
76977Smax.romanov@gmail.com     char                       *webapp;
77977Smax.romanov@gmail.com     nxt_conf_value_t           *options;
78977Smax.romanov@gmail.com     char                       *unit_jars;
79977Smax.romanov@gmail.com } nxt_java_app_conf_t;
80977Smax.romanov@gmail.com 
81977Smax.romanov@gmail.com 
82141Smax.romanov@nginx.com struct nxt_common_app_conf_s {
83678Svbart@nginx.com     nxt_str_t                  name;
84678Svbart@nginx.com     nxt_str_t                  type;
85678Svbart@nginx.com     nxt_str_t                  user;
86678Svbart@nginx.com     nxt_str_t                  group;
87141Smax.romanov@nginx.com 
88678Svbart@nginx.com     char                       *working_directory;
89678Svbart@nginx.com     nxt_conf_value_t           *environment;
90271Smax.romanov@nginx.com 
911182St.nateldemoura@f5.com     nxt_conf_value_t           *isolation;
92*1320Smax.romanov@nginx.com     nxt_conf_value_t           *limits;
93*1320Smax.romanov@nginx.com 
94*1320Smax.romanov@nginx.com     size_t                     shm_limit;
951182St.nateldemoura@f5.com 
96141Smax.romanov@nginx.com     union {
97804Svbart@nginx.com         nxt_external_app_conf_t  external;
98804Svbart@nginx.com         nxt_python_app_conf_t    python;
99804Svbart@nginx.com         nxt_php_app_conf_t       php;
100804Svbart@nginx.com         nxt_perl_app_conf_t      perl;
101804Svbart@nginx.com         nxt_ruby_app_conf_t      ruby;
102977Smax.romanov@gmail.com         nxt_java_app_conf_t      java;
103141Smax.romanov@nginx.com     } u;
104141Smax.romanov@nginx.com };
105141Smax.romanov@nginx.com 
106141Smax.romanov@nginx.com 
107216Sigor@sysoev.ru struct nxt_app_module_s {
108258Sigor@sysoev.ru     size_t                     compat_length;
109258Sigor@sysoev.ru     uint32_t                   *compat;
110258Sigor@sysoev.ru 
111216Sigor@sysoev.ru     nxt_str_t                  type;
112612Salexander.borisov@nginx.com     const char                 *version;
113141Smax.romanov@nginx.com 
114977Smax.romanov@gmail.com     nxt_int_t                  (*pre_init)(nxt_task_t *task,
115977Smax.romanov@gmail.com                                     nxt_common_app_conf_t *conf);
116141Smax.romanov@nginx.com     nxt_int_t                  (*init)(nxt_task_t *task,
117141Smax.romanov@nginx.com                                     nxt_common_app_conf_t *conf);
118141Smax.romanov@nginx.com };
1190Sigor@sysoev.ru 
1200Sigor@sysoev.ru 
121216Sigor@sysoev.ru nxt_app_lang_module_t *nxt_app_lang_module(nxt_runtime_t *rt, nxt_str_t *name);
122510Salexander.borisov@nginx.com nxt_app_type_t nxt_app_parse_type(u_char *p, size_t length);
123216Sigor@sysoev.ru 
124743Smax.romanov@nginx.com NXT_EXPORT extern nxt_str_t  nxt_server;
125804Svbart@nginx.com extern nxt_app_module_t      nxt_external_module;
126743Smax.romanov@nginx.com 
127743Smax.romanov@nginx.com NXT_EXPORT nxt_int_t nxt_unit_default_init(nxt_task_t *task,
128743Smax.romanov@nginx.com     nxt_unit_init_t *init);
129216Sigor@sysoev.ru 
130216Sigor@sysoev.ru 
1310Sigor@sysoev.ru #endif /* _NXT_APPLICATION_H_INCLIDED_ */
132