1 2 /* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) Valentin V. Bartenev 5 * Copyright (C) NGINX, Inc. 6 */ 7 8 #ifndef _NXT_RUNTIME_H_INCLUDED_ 9 #define _NXT_RUNTIME_H_INCLUDED_ 10 11 12 typedef void (*nxt_runtime_cont_t)(nxt_task_t *task); 13 14 15 struct nxt_runtime_s { 16 nxt_mem_pool_t *mem_pool; 17 18 nxt_array_t *inherited_sockets; /* of nxt_listen_socket_t */ 19 nxt_array_t *listen_sockets; /* of nxt_listen_socket_t */ 20 21 nxt_array_t *services; /* of nxt_service_t */ 22 nxt_array_t *engines; /* of nxt_event_engine_t */ 23 24 nxt_runtime_cont_t start; 25 26 nxt_str_t *conf_prefix; 27 nxt_str_t *prefix; 28 29 nxt_str_t hostname; 30 31 nxt_file_name_t *pid_file; 32 33 #if (NXT_THREADS) 34 nxt_array_t *thread_pools; /* of nxt_thread_pool_t */ 35 nxt_runtime_cont_t continuation; 36 #endif 37 38 nxt_array_t *processes; /* of nxt_process_t */ 39 40 nxt_list_t *log_files; /* of nxt_file_t */ 41 42 uint32_t last_engine_id; 43 44 nxt_process_type_t type; 45 46 nxt_timer_t timer; 47 48 uint8_t daemon; 49 uint8_t batch; 50 uint8_t master_process; 51 const char *engine; 52 uint32_t engine_connections; 53 uint32_t worker_processes; 54 uint32_t auxiliary_threads; 55 nxt_user_cred_t user_cred; 56 const char *group; 57 const char *pid; 58 const char *error_log; 59 60 nxt_sockaddr_t *controller_listen; 61 nxt_listen_socket_t *controller_socket; 62 nxt_str_t upstream; 63 }; 64 65 66 67 typedef nxt_int_t (*nxt_module_init_t)(nxt_thread_t *thr, nxt_runtime_t *rt); 68 69 70 nxt_int_t nxt_runtime_create(nxt_task_t *task); 71 void nxt_runtime_quit(nxt_task_t *task); 72 73 void nxt_runtime_event_engine_free(nxt_runtime_t *rt); 74 75 #if (NXT_THREADS) 76 nxt_int_t nxt_runtime_thread_pool_create(nxt_thread_t *thr, nxt_runtime_t *rt, 77 nxt_uint_t max_threads, nxt_nsec_t timeout); 78 #endif 79 80 81 nxt_process_t *nxt_runtime_new_process(nxt_runtime_t *rt); 82 83 /* STUB */ 84 nxt_int_t nxt_runtime_controller_socket(nxt_task_t *task, nxt_runtime_t *rt); 85 86 nxt_str_t *nxt_current_directory(nxt_mem_pool_t *mp); 87 88 nxt_listen_socket_t *nxt_runtime_listen_socket_add(nxt_runtime_t *rt, 89 nxt_sockaddr_t *sa); 90 nxt_int_t nxt_runtime_listen_sockets_create(nxt_task_t *task, 91 nxt_runtime_t *rt); 92 nxt_int_t nxt_runtime_listen_sockets_enable(nxt_task_t *task, 93 nxt_runtime_t *rt); 94 nxt_file_t *nxt_runtime_log_file_add(nxt_runtime_t *rt, nxt_str_t *name); 95 96 /* STUB */ 97 void nxt_cdecl nxt_log_time_handler(nxt_uint_t level, nxt_log_t *log, 98 const char *fmt, ...); 99 100 void nxt_stream_connection_init(nxt_task_t *task, void *obj, void *data); 101 nxt_int_t nxt_app_start(nxt_task_t *task, nxt_runtime_t *rt); 102 103 104 extern nxt_module_init_t nxt_init_modules[]; 105 extern nxt_uint_t nxt_init_modules_n; 106 107 108 #endif /* _NXT_RUNTIME_H_INCLIDED_ */ 109