Deleted
Added
nxt_controller.c (645:1c993ea13906) | nxt_controller.c (662:053984ce0c4e) |
---|---|
1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) Valentin V. Bartenev 5 * Copyright (C) NGINX, Inc. 6 */ 7 8#include <nxt_main.h> --- 26 unchanged lines hidden (view full) --- 35 ssize_t offset; 36 nxt_uint_t line; 37 nxt_uint_t column; 38} nxt_controller_response_t; 39 40 41static void nxt_controller_process_new_port_handler(nxt_task_t *task, 42 nxt_port_recv_msg_t *msg); | 1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) Valentin V. Bartenev 5 * Copyright (C) NGINX, Inc. 6 */ 7 8#include <nxt_main.h> --- 26 unchanged lines hidden (view full) --- 35 ssize_t offset; 36 nxt_uint_t line; 37 nxt_uint_t column; 38} nxt_controller_response_t; 39 40 41static void nxt_controller_process_new_port_handler(nxt_task_t *task, 42 nxt_port_recv_msg_t *msg); |
43static void nxt_controller_send_current_conf(nxt_task_t *task); 44static void nxt_controller_router_ready_handler(nxt_task_t *task, 45 nxt_port_recv_msg_t *msg); |
|
43static nxt_int_t nxt_controller_conf_default(void); 44static void nxt_controller_conf_init_handler(nxt_task_t *task, 45 nxt_port_recv_msg_t *msg, void *data); 46static nxt_int_t nxt_controller_conf_send(nxt_task_t *task, 47 nxt_conf_value_t *conf, nxt_port_rpc_handler_t handler, void *data); 48 49static void nxt_controller_conn_init(nxt_task_t *task, void *obj, void *data); 50static void nxt_controller_conn_read(nxt_task_t *task, void *obj, void *data); --- 31 unchanged lines hidden (view full) --- 82static nxt_http_field_proc_t nxt_controller_request_fields[] = { 83 { nxt_string("Content-Length"), 84 &nxt_controller_request_content_length, 0 }, 85}; 86 87static nxt_lvlhsh_t nxt_controller_fields_hash; 88 89static nxt_uint_t nxt_controller_listening; | 46static nxt_int_t nxt_controller_conf_default(void); 47static void nxt_controller_conf_init_handler(nxt_task_t *task, 48 nxt_port_recv_msg_t *msg, void *data); 49static nxt_int_t nxt_controller_conf_send(nxt_task_t *task, 50 nxt_conf_value_t *conf, nxt_port_rpc_handler_t handler, void *data); 51 52static void nxt_controller_conn_init(nxt_task_t *task, void *obj, void *data); 53static void nxt_controller_conn_read(nxt_task_t *task, void *obj, void *data); --- 31 unchanged lines hidden (view full) --- 85static nxt_http_field_proc_t nxt_controller_request_fields[] = { 86 { nxt_string("Content-Length"), 87 &nxt_controller_request_content_length, 0 }, 88}; 89 90static nxt_lvlhsh_t nxt_controller_fields_hash; 91 92static nxt_uint_t nxt_controller_listening; |
93static nxt_uint_t nxt_controller_router_ready; |
|
90static nxt_controller_conf_t nxt_controller_conf; 91static nxt_queue_t nxt_controller_waiting_requests; 92 93 94static const nxt_event_conn_state_t nxt_controller_conn_read_state; 95static const nxt_event_conn_state_t nxt_controller_conn_body_read_state; 96static const nxt_event_conn_state_t nxt_controller_conn_write_state; 97static const nxt_event_conn_state_t nxt_controller_conn_close_state; 98 99 100nxt_port_handlers_t nxt_controller_process_port_handlers = { | 94static nxt_controller_conf_t nxt_controller_conf; 95static nxt_queue_t nxt_controller_waiting_requests; 96 97 98static const nxt_event_conn_state_t nxt_controller_conn_read_state; 99static const nxt_event_conn_state_t nxt_controller_conn_body_read_state; 100static const nxt_event_conn_state_t nxt_controller_conn_write_state; 101static const nxt_event_conn_state_t nxt_controller_conn_close_state; 102 103 104nxt_port_handlers_t nxt_controller_process_port_handlers = { |
101 .quit = nxt_worker_process_quit_handler, 102 .new_port = nxt_controller_process_new_port_handler, 103 .change_file = nxt_port_change_log_file_handler, 104 .mmap = nxt_port_mmap_handler, 105 .data = nxt_port_data_handler, 106 .remove_pid = nxt_port_remove_pid_handler, 107 .rpc_ready = nxt_port_rpc_handler, 108 .rpc_error = nxt_port_rpc_handler, | 105 .quit = nxt_worker_process_quit_handler, 106 .new_port = nxt_controller_process_new_port_handler, 107 .change_file = nxt_port_change_log_file_handler, 108 .mmap = nxt_port_mmap_handler, 109 .process_ready = nxt_controller_router_ready_handler, 110 .data = nxt_port_data_handler, 111 .remove_pid = nxt_port_remove_pid_handler, 112 .rpc_ready = nxt_port_rpc_handler, 113 .rpc_error = nxt_port_rpc_handler, |
109}; 110 111 112nxt_int_t 113nxt_controller_start(nxt_task_t *task, void *data) 114{ 115 nxt_mp_t *mp; 116 nxt_int_t ret; --- 80 unchanged lines hidden (view full) --- 197 return NXT_OK; 198} 199 200 201static void 202nxt_controller_process_new_port_handler(nxt_task_t *task, 203 nxt_port_recv_msg_t *msg) 204{ | 114}; 115 116 117nxt_int_t 118nxt_controller_start(nxt_task_t *task, void *data) 119{ 120 nxt_mp_t *mp; 121 nxt_int_t ret; --- 80 unchanged lines hidden (view full) --- 202 return NXT_OK; 203} 204 205 206static void 207nxt_controller_process_new_port_handler(nxt_task_t *task, 208 nxt_port_recv_msg_t *msg) 209{ |
205 nxt_int_t rc; 206 nxt_runtime_t *rt; 207 nxt_conf_value_t *conf; 208 | |
209 nxt_port_new_port_handler(task, msg); 210 | 210 nxt_port_new_port_handler(task, msg); 211 |
211 if (msg->u.new_port->type != NXT_PROCESS_ROUTER) { | 212 if (msg->u.new_port->type != NXT_PROCESS_ROUTER 213 || !nxt_controller_router_ready) 214 { |
212 return; 213 } 214 | 215 return; 216 } 217 |
218 nxt_controller_send_current_conf(task); 219} 220 221 222static void 223nxt_controller_send_current_conf(nxt_task_t *task) 224{ 225 nxt_int_t rc; 226 nxt_runtime_t *rt; 227 nxt_conf_value_t *conf; 228 |
|
215 conf = nxt_controller_conf.root; 216 217 if (conf != NULL) { 218 rc = nxt_controller_conf_send(task, conf, 219 nxt_controller_conf_init_handler, NULL); 220 221 if (nxt_fast_path(rc == NXT_OK)) { 222 return; --- 15 unchanged lines hidden (view full) --- 238 if (nxt_slow_path(nxt_listen_event(task, rt->controller_socket) == NULL)) { 239 nxt_abort(); 240 } 241 242 nxt_controller_listening = 1; 243} 244 245 | 229 conf = nxt_controller_conf.root; 230 231 if (conf != NULL) { 232 rc = nxt_controller_conf_send(task, conf, 233 nxt_controller_conf_init_handler, NULL); 234 235 if (nxt_fast_path(rc == NXT_OK)) { 236 return; --- 15 unchanged lines hidden (view full) --- 252 if (nxt_slow_path(nxt_listen_event(task, rt->controller_socket) == NULL)) { 253 nxt_abort(); 254 } 255 256 nxt_controller_listening = 1; 257} 258 259 |
260static void 261nxt_controller_router_ready_handler(nxt_task_t *task, 262 nxt_port_recv_msg_t *msg) 263{ 264 nxt_port_t *router_port; 265 nxt_runtime_t *rt; 266 267 rt = task->thread->runtime; 268 269 router_port = rt->port_by_type[NXT_PROCESS_ROUTER]; 270 271 nxt_controller_router_ready = 1; 272 273 if (router_port != NULL) { 274 nxt_controller_send_current_conf(task); 275 } 276} 277 278 |
|
246static nxt_int_t 247nxt_controller_conf_default(void) 248{ 249 nxt_mp_t *mp; 250 nxt_conf_value_t *conf; 251 252 static const nxt_str_t json 253 = nxt_string("{ \"listeners\": {}, \"applications\": {} }"); --- 57 unchanged lines hidden (view full) --- 311 nxt_buf_t *b; 312 nxt_port_t *router_port, *controller_port; 313 nxt_runtime_t *rt; 314 315 rt = task->thread->runtime; 316 317 router_port = rt->port_by_type[NXT_PROCESS_ROUTER]; 318 | 279static nxt_int_t 280nxt_controller_conf_default(void) 281{ 282 nxt_mp_t *mp; 283 nxt_conf_value_t *conf; 284 285 static const nxt_str_t json 286 = nxt_string("{ \"listeners\": {}, \"applications\": {} }"); --- 57 unchanged lines hidden (view full) --- 344 nxt_buf_t *b; 345 nxt_port_t *router_port, *controller_port; 346 nxt_runtime_t *rt; 347 348 rt = task->thread->runtime; 349 350 router_port = rt->port_by_type[NXT_PROCESS_ROUTER]; 351 |
319 if (nxt_slow_path(router_port == NULL)) { | 352 if (nxt_slow_path(router_port == NULL || !nxt_controller_router_ready)) { |
320 return NXT_DECLINED; 321 } 322 323 controller_port = rt->port_by_type[NXT_PROCESS_CONTROLLER]; 324 325 size = nxt_conf_json_length(conf, NULL); 326 327 b = nxt_port_mmap_get_buf(task, router_port, size); --- 974 unchanged lines hidden --- | 353 return NXT_DECLINED; 354 } 355 356 controller_port = rt->port_by_type[NXT_PROCESS_CONTROLLER]; 357 358 size = nxt_conf_json_length(conf, NULL); 359 360 b = nxt_port_mmap_get_buf(task, router_port, size); --- 974 unchanged lines hidden --- |