Libunit refactoring: port management.
- Changed the port management callbacks to notifications, which e. g. avoids the need to call the libunit function - Added context and library instance reference counts for a safer resource release - Added the router main port initialization
This commit is contained in:
@@ -69,7 +69,7 @@ nxt_external_start(nxt_task_t *task, nxt_process_data_t *data)
|
||||
nxt_str_t str;
|
||||
nxt_int_t rc;
|
||||
nxt_uint_t i, argc;
|
||||
nxt_port_t *my_port, *main_port;
|
||||
nxt_port_t *my_port, *main_port, *router_port;
|
||||
nxt_runtime_t *rt;
|
||||
nxt_conf_value_t *value;
|
||||
nxt_common_app_conf_t *conf;
|
||||
@@ -79,9 +79,12 @@ nxt_external_start(nxt_task_t *task, nxt_process_data_t *data)
|
||||
conf = data->app;
|
||||
|
||||
main_port = rt->port_by_type[NXT_PROCESS_MAIN];
|
||||
router_port = rt->port_by_type[NXT_PROCESS_ROUTER];
|
||||
my_port = nxt_runtime_port_find(rt, nxt_pid, 0);
|
||||
|
||||
if (nxt_slow_path(main_port == NULL || my_port == NULL)) {
|
||||
if (nxt_slow_path(main_port == NULL || my_port == NULL
|
||||
|| router_port == NULL))
|
||||
{
|
||||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
@@ -90,6 +93,11 @@ nxt_external_start(nxt_task_t *task, nxt_process_data_t *data)
|
||||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
rc = nxt_external_fd_no_cloexec(task, router_port->pair[1]);
|
||||
if (nxt_slow_path(rc != NXT_OK)) {
|
||||
return NXT_ERROR;
|
||||
}
|
||||
|
||||
rc = nxt_external_fd_no_cloexec(task, my_port->pair[0]);
|
||||
if (nxt_slow_path(rc != NXT_OK)) {
|
||||
return NXT_ERROR;
|
||||
@@ -101,9 +109,11 @@ nxt_external_start(nxt_task_t *task, nxt_process_data_t *data)
|
||||
"%s;%uD;"
|
||||
"%PI,%ud,%d;"
|
||||
"%PI,%ud,%d;"
|
||||
"%PI,%ud,%d;"
|
||||
"%d,%z,%Z",
|
||||
NXT_VERSION, my_port->process->stream,
|
||||
main_port->pid, main_port->id, main_port->pair[1],
|
||||
router_port->pid, router_port->id, router_port->pair[1],
|
||||
my_port->pid, my_port->id, my_port->pair[0],
|
||||
2, conf->shm_limit);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user