1802Salexander.borisov@nginx.com 2802Salexander.borisov@nginx.com /* 3802Salexander.borisov@nginx.com * Copyright (C) NGINX, Inc. 4802Salexander.borisov@nginx.com */ 5802Salexander.borisov@nginx.com 6802Salexander.borisov@nginx.com #ifndef _NXT_NODEJS_UNIT_H_INCLUDED_ 7802Salexander.borisov@nginx.com #define _NXT_NODEJS_UNIT_H_INCLUDED_ 8802Salexander.borisov@nginx.com 9802Salexander.borisov@nginx.com 10802Salexander.borisov@nginx.com #include <node_api.h> 11802Salexander.borisov@nginx.com 12802Salexander.borisov@nginx.com 13802Salexander.borisov@nginx.com #ifdef __cplusplus 14802Salexander.borisov@nginx.com extern "C" { 15802Salexander.borisov@nginx.com #endif 16802Salexander.borisov@nginx.com 17802Salexander.borisov@nginx.com #include <nxt_unit.h> 18802Salexander.borisov@nginx.com #include <nxt_unit_response.h> 19802Salexander.borisov@nginx.com #include <nxt_unit_request.h> 20802Salexander.borisov@nginx.com 21802Salexander.borisov@nginx.com #ifdef __cplusplus 22802Salexander.borisov@nginx.com } /* extern "C" */ 23802Salexander.borisov@nginx.com #endif 24802Salexander.borisov@nginx.com 25802Salexander.borisov@nginx.com 26802Salexander.borisov@nginx.com class Unit { 27802Salexander.borisov@nginx.com public: 28802Salexander.borisov@nginx.com static napi_value init(napi_env env, napi_value exports); 29802Salexander.borisov@nginx.com 30802Salexander.borisov@nginx.com private: 31802Salexander.borisov@nginx.com Unit(napi_env env); 32802Salexander.borisov@nginx.com ~Unit(); 33802Salexander.borisov@nginx.com 34802Salexander.borisov@nginx.com static napi_value create(napi_env env, napi_callback_info info); 35802Salexander.borisov@nginx.com static void destroy(napi_env env, void *nativeObject, void *finalize_hint); 36802Salexander.borisov@nginx.com 37802Salexander.borisov@nginx.com static napi_value create_server(napi_env env, napi_callback_info info); 38802Salexander.borisov@nginx.com static napi_value listen(napi_env env, napi_callback_info info); 39*828Salexander.borisov@nginx.com static napi_value _read(napi_env env, napi_callback_info info); 40802Salexander.borisov@nginx.com static void request_handler(nxt_unit_request_info_t *req); 41*828Salexander.borisov@nginx.com static int add_port(nxt_unit_ctx_t *ctx, nxt_unit_port_t *port); 42*828Salexander.borisov@nginx.com static void remove_port(nxt_unit_ctx_t *ctx, nxt_unit_port_id_t *port_id); 43802Salexander.borisov@nginx.com 44802Salexander.borisov@nginx.com napi_value get_server_object(); 45802Salexander.borisov@nginx.com 46802Salexander.borisov@nginx.com napi_value create_socket(napi_value server_obj, 47802Salexander.borisov@nginx.com nxt_unit_request_info_t *req); 48802Salexander.borisov@nginx.com 49802Salexander.borisov@nginx.com napi_value create_request(napi_value server_obj, napi_value socket); 50802Salexander.borisov@nginx.com 51802Salexander.borisov@nginx.com napi_value create_response(napi_value server_obj, napi_value socket, 52802Salexander.borisov@nginx.com napi_value request, 53802Salexander.borisov@nginx.com nxt_unit_request_info_t *req, Unit *obj); 54802Salexander.borisov@nginx.com 55802Salexander.borisov@nginx.com static napi_value response_send_headers(napi_env env, 56802Salexander.borisov@nginx.com napi_callback_info info); 57802Salexander.borisov@nginx.com 58802Salexander.borisov@nginx.com static napi_value response_write(napi_env env, napi_callback_info info); 59802Salexander.borisov@nginx.com static napi_value response_end(napi_env env, napi_callback_info info); 60802Salexander.borisov@nginx.com 61802Salexander.borisov@nginx.com napi_status create_headers(nxt_unit_request_info_t *req, 62802Salexander.borisov@nginx.com napi_value request); 63802Salexander.borisov@nginx.com 64802Salexander.borisov@nginx.com inline napi_status append_header(nxt_unit_field_t *f, napi_value headers, 65802Salexander.borisov@nginx.com napi_value raw_headers, uint32_t idx); 66802Salexander.borisov@nginx.com 67802Salexander.borisov@nginx.com static napi_ref constructor_; 68802Salexander.borisov@nginx.com 69802Salexander.borisov@nginx.com napi_env env_; 70802Salexander.borisov@nginx.com napi_ref wrapper_; 71802Salexander.borisov@nginx.com nxt_unit_ctx_t *unit_ctx_; 72802Salexander.borisov@nginx.com }; 73802Salexander.borisov@nginx.com 74802Salexander.borisov@nginx.com 75802Salexander.borisov@nginx.com #endif /* _NXT_NODEJS_H_INCLUDED_ */ 76