1*802Salexander.borisov@nginx.com 2*802Salexander.borisov@nginx.com /* 3*802Salexander.borisov@nginx.com * Copyright (C) NGINX, Inc. 4*802Salexander.borisov@nginx.com */ 5*802Salexander.borisov@nginx.com 6*802Salexander.borisov@nginx.com #ifndef _NXT_NODEJS_UNIT_H_INCLUDED_ 7*802Salexander.borisov@nginx.com #define _NXT_NODEJS_UNIT_H_INCLUDED_ 8*802Salexander.borisov@nginx.com 9*802Salexander.borisov@nginx.com 10*802Salexander.borisov@nginx.com #include <node_api.h> 11*802Salexander.borisov@nginx.com 12*802Salexander.borisov@nginx.com 13*802Salexander.borisov@nginx.com #ifdef __cplusplus 14*802Salexander.borisov@nginx.com extern "C" { 15*802Salexander.borisov@nginx.com #endif 16*802Salexander.borisov@nginx.com 17*802Salexander.borisov@nginx.com #include <nxt_unit.h> 18*802Salexander.borisov@nginx.com #include <nxt_unit_response.h> 19*802Salexander.borisov@nginx.com #include <nxt_unit_request.h> 20*802Salexander.borisov@nginx.com 21*802Salexander.borisov@nginx.com #ifdef __cplusplus 22*802Salexander.borisov@nginx.com } /* extern "C" */ 23*802Salexander.borisov@nginx.com #endif 24*802Salexander.borisov@nginx.com 25*802Salexander.borisov@nginx.com 26*802Salexander.borisov@nginx.com class Unit { 27*802Salexander.borisov@nginx.com public: 28*802Salexander.borisov@nginx.com static napi_value init(napi_env env, napi_value exports); 29*802Salexander.borisov@nginx.com 30*802Salexander.borisov@nginx.com private: 31*802Salexander.borisov@nginx.com Unit(napi_env env); 32*802Salexander.borisov@nginx.com ~Unit(); 33*802Salexander.borisov@nginx.com 34*802Salexander.borisov@nginx.com static napi_value create(napi_env env, napi_callback_info info); 35*802Salexander.borisov@nginx.com static void destroy(napi_env env, void *nativeObject, void *finalize_hint); 36*802Salexander.borisov@nginx.com 37*802Salexander.borisov@nginx.com static napi_value create_server(napi_env env, napi_callback_info info); 38*802Salexander.borisov@nginx.com static napi_value listen(napi_env env, napi_callback_info info); 39*802Salexander.borisov@nginx.com static void request_handler(nxt_unit_request_info_t *req); 40*802Salexander.borisov@nginx.com 41*802Salexander.borisov@nginx.com napi_value get_server_object(); 42*802Salexander.borisov@nginx.com 43*802Salexander.borisov@nginx.com napi_value emit(napi_value obj, const char *name, size_t name_len, 44*802Salexander.borisov@nginx.com size_t argc, napi_value *argv); 45*802Salexander.borisov@nginx.com 46*802Salexander.borisov@nginx.com napi_value create_socket(napi_value server_obj, 47*802Salexander.borisov@nginx.com nxt_unit_request_info_t *req); 48*802Salexander.borisov@nginx.com 49*802Salexander.borisov@nginx.com napi_value create_request(napi_value server_obj, napi_value socket); 50*802Salexander.borisov@nginx.com 51*802Salexander.borisov@nginx.com napi_value create_response(napi_value server_obj, napi_value socket, 52*802Salexander.borisov@nginx.com napi_value request, 53*802Salexander.borisov@nginx.com nxt_unit_request_info_t *req, Unit *obj); 54*802Salexander.borisov@nginx.com 55*802Salexander.borisov@nginx.com void emit_post_data(napi_value request, nxt_unit_request_info_t *req); 56*802Salexander.borisov@nginx.com 57*802Salexander.borisov@nginx.com static napi_value response_send_headers(napi_env env, 58*802Salexander.borisov@nginx.com napi_callback_info info); 59*802Salexander.borisov@nginx.com 60*802Salexander.borisov@nginx.com static napi_value response_write(napi_env env, napi_callback_info info); 61*802Salexander.borisov@nginx.com static napi_value response_end(napi_env env, napi_callback_info info); 62*802Salexander.borisov@nginx.com 63*802Salexander.borisov@nginx.com napi_status create_headers(nxt_unit_request_info_t *req, 64*802Salexander.borisov@nginx.com napi_value request); 65*802Salexander.borisov@nginx.com 66*802Salexander.borisov@nginx.com inline napi_status append_header(nxt_unit_field_t *f, napi_value headers, 67*802Salexander.borisov@nginx.com napi_value raw_headers, uint32_t idx); 68*802Salexander.borisov@nginx.com 69*802Salexander.borisov@nginx.com static napi_ref constructor_; 70*802Salexander.borisov@nginx.com 71*802Salexander.borisov@nginx.com napi_env env_; 72*802Salexander.borisov@nginx.com napi_ref wrapper_; 73*802Salexander.borisov@nginx.com nxt_unit_ctx_t *unit_ctx_; 74*802Salexander.borisov@nginx.com }; 75*802Salexander.borisov@nginx.com 76*802Salexander.borisov@nginx.com 77*802Salexander.borisov@nginx.com #endif /* _NXT_NODEJS_H_INCLUDED_ */ 78