Skip to content
This repository was archived by the owner on Oct 8, 2025. It is now read-only.

Commit 059a864

Browse files
committed
Event engines refactoring.
1 parent e57b95a commit 059a864

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+4375
-4497
lines changed

auto/sources

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,9 @@ NXT_LIB_DEPS=" \
5555
src/nxt_service.h \
5656
src/nxt_fiber.h \
5757
src/nxt_log_moderation.h \
58-
src/nxt_event_set.h \
5958
src/nxt_event_engine.h \
6059
src/nxt_timer.h \
61-
src/nxt_event_fd.h \
60+
src/nxt_fd_event.h \
6261
src/nxt_event_conn.h \
6362
src/nxt_event_file.h \
6463
src/nxt_job.h \
@@ -113,9 +112,9 @@ NXT_LIB_SRCS=" \
113112
src/nxt_service.c \
114113
src/nxt_fiber.c \
115114
src/nxt_log_moderation.c \
116-
src/nxt_event_set.c \
117115
src/nxt_event_engine.c \
118116
src/nxt_timer.c \
117+
src/nxt_fd_event.c \
119118
src/nxt_event_conn.c \
120119
src/nxt_event_conn_connect.c \
121120
src/nxt_event_conn_accept.c \
@@ -163,13 +162,13 @@ NXT_LIB_GNUTLS_SRCS="src/nxt_gnutls.c"
163162
NXT_LIB_CYASSL_SRCS="src/nxt_cyassl.c"
164163
NXT_LIB_POLARSSL_SRCS="src/nxt_polarssl.c"
165164

166-
NXT_LIB_EPOLL_SRCS="src/nxt_epoll.c"
167-
NXT_LIB_KQUEUE_SRCS="src/nxt_kqueue.c"
168-
NXT_LIB_EVENTPORT_SRCS="src/nxt_eventport.c"
169-
NXT_LIB_DEVPOLL_SRCS="src/nxt_devpoll.c"
170-
NXT_LIB_POLLSET_SRCS="src/nxt_pollset.c"
171-
NXT_LIB_POLL_SRCS="src/nxt_poll.c"
172-
NXT_LIB_SELECT_SRCS="src/nxt_select.c"
165+
NXT_LIB_EPOLL_SRCS="src/nxt_epoll_engine.c"
166+
NXT_LIB_KQUEUE_SRCS="src/nxt_kqueue_engine.c"
167+
NXT_LIB_EVENTPORT_SRCS="src/nxt_eventport_engine.c"
168+
NXT_LIB_DEVPOLL_SRCS="src/nxt_devpoll_engine.c"
169+
NXT_LIB_POLLSET_SRCS="src/nxt_pollset_engine.c"
170+
NXT_LIB_POLL_SRCS="src/nxt_poll_engine.c"
171+
NXT_LIB_SELECT_SRCS="src/nxt_select_engine.c"
173172

174173
NXT_LIB_LINUX_SENDFILE_SRCS="src/nxt_linux_sendfile.c"
175174
NXT_LIB_FREEBSD_SENDFILE_SRCS="src/nxt_freebsd_sendfile.c"

src/nxt_application.c

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,7 @@ nxt_app_conn_update(nxt_thread_t *thr, nxt_event_conn_t *c, nxt_log_t *log)
516516
c->task.log = &c->log;
517517
c->task.ident = c->log.ident;
518518

519-
c->io = thr->engine->event->io;
519+
c->io = thr->engine->event.io;
520520
c->max_chunk = NXT_INT32_T_MAX;
521521
c->sendfile = NXT_CONN_SENDFILE_UNSET;
522522

@@ -831,10 +831,27 @@ nxt_app_delivery_ready(nxt_task_t *task, void *obj, void *data)
831831
}
832832

833833

834+
static const nxt_event_conn_state_t nxt_app_delivery_close_state
835+
nxt_aligned(64) =
836+
{
837+
NXT_EVENT_NO_BUF_PROCESS,
838+
NXT_EVENT_TIMER_NO_AUTORESET,
839+
840+
nxt_app_close_request,
841+
NULL,
842+
NULL,
843+
844+
NULL,
845+
NULL,
846+
0,
847+
};
848+
849+
834850
static void
835851
nxt_app_delivery_completion(nxt_task_t *task, void *obj, void *data)
836852
{
837853
nxt_buf_t *b, *bn, *free;
854+
nxt_event_conn_t *c;
838855
nxt_app_request_t *r;
839856

840857
nxt_debug(task, "app delivery completion");
@@ -857,8 +874,10 @@ nxt_app_delivery_completion(nxt_task_t *task, void *obj, void *data)
857874
if (nxt_buf_is_last(b)) {
858875
r = (nxt_app_request_t *) b->parent;
859876

860-
nxt_work_queue_add(&task->thread->engine->final_work_queue,
861-
nxt_app_close_request, task, r, NULL);
877+
c = r->event_conn;
878+
c->write_state = &nxt_app_delivery_close_state;
879+
880+
nxt_event_conn_close(task->thread->engine, c);
862881
}
863882
}
864883

@@ -940,12 +959,11 @@ nxt_app_close_request(nxt_task_t *task, void *obj, void *data)
940959
nxt_event_conn_t *c;
941960
nxt_app_request_t *r;
942961

943-
r = obj;
944-
c = r->event_conn;
962+
c = obj;
945963

946964
nxt_debug(task, "app close connection");
947965

948-
nxt_event_conn_close(task, c);
966+
r = c->socket.data;
949967

950968
nxt_mem_pool_destroy(c->mem_pool);
951969
nxt_mem_pool_destroy(r->mem_pool);

src/nxt_cycle.c

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -297,8 +297,8 @@ nxt_cycle_systemd_listen_sockets(nxt_thread_t *thr, nxt_cycle_t *cycle)
297297
static nxt_int_t
298298
nxt_cycle_event_engines(nxt_thread_t *thr, nxt_cycle_t *cycle)
299299
{
300-
nxt_event_engine_t *engine, **e, **engines;
301-
const nxt_event_set_ops_t *event_set;
300+
nxt_event_engine_t *engine, **e, **engines;
301+
const nxt_event_interface_t *interface;
302302

303303
cycle->engines = nxt_array_create(cycle->mem_pool, 1,
304304
sizeof(nxt_event_engine_t *));
@@ -318,14 +318,14 @@ nxt_cycle_event_engines(nxt_thread_t *thr, nxt_cycle_t *cycle)
318318
*e = engines[0];
319319

320320
} else {
321-
event_set = nxt_service_get(cycle->services, "engine", NULL);
321+
interface = nxt_service_get(cycle->services, "engine", NULL);
322322

323-
if (nxt_slow_path(event_set == NULL)) {
323+
if (nxt_slow_path(interface == NULL)) {
324324
/* TODO: log */
325325
return NXT_ERROR;
326326
}
327327

328-
engine = nxt_event_engine_create(thr, event_set,
328+
engine = nxt_event_engine_create(thr, interface,
329329
nxt_master_process_signals, 0, 0);
330330

331331
if (nxt_slow_path(engine == NULL)) {
@@ -464,9 +464,9 @@ nxt_cycle_start(nxt_task_t *task, void *obj, void *data)
464464
static void
465465
nxt_cycle_initial_start(nxt_task_t *task, nxt_cycle_t *cycle)
466466
{
467-
nxt_int_t ret;
468-
nxt_thread_t *thr;
469-
const nxt_event_set_ops_t *event_set;
467+
nxt_int_t ret;
468+
nxt_thread_t *thr;
469+
const nxt_event_interface_t *interface;
470470

471471
thr = task->thread;
472472

@@ -482,12 +482,12 @@ nxt_cycle_initial_start(nxt_task_t *task, nxt_cycle_t *cycle)
482482
* 1) inherited kqueue descriptor is invalid,
483483
* 2) the signal thread is not inherited.
484484
*/
485-
event_set = nxt_service_get(cycle->services, "engine", cycle->engine);
486-
if (event_set == NULL) {
485+
interface = nxt_service_get(cycle->services, "engine", cycle->engine);
486+
if (interface == NULL) {
487487
goto fail;
488488
}
489489

490-
ret = nxt_event_engine_change(thr, task, event_set, cycle->batch);
490+
ret = nxt_event_engine_change(thr, task, interface, cycle->batch);
491491
if (ret != NXT_OK) {
492492
goto fail;
493493
}
@@ -608,7 +608,7 @@ nxt_cycle_close_idle_connections(nxt_thread_t *thr, nxt_task_t *task)
608608

609609
if (!c->socket.read_ready) {
610610
nxt_queue_remove(link);
611-
nxt_event_conn_close(task, c);
611+
nxt_event_conn_close(thr->engine, c);
612612
}
613613
}
614614
}
@@ -635,7 +635,7 @@ nxt_cycle_exit(nxt_task_t *task, void *obj, void *data)
635635
nxt_cycle_pid_file_delete(cycle);
636636
}
637637

638-
if (!task->thread->engine->event->signal_support) {
638+
if (!task->thread->engine->event.signal_support) {
639639
nxt_event_engine_signals_stop(task->thread->engine);
640640
}
641641

@@ -650,17 +650,17 @@ static nxt_int_t
650650
nxt_cycle_event_engine_change(nxt_thread_t *thr, nxt_task_t *task,
651651
nxt_cycle_t *cycle)
652652
{
653-
const nxt_event_set_ops_t *event_set;
653+
const nxt_event_interface_t *interface;
654654

655655
if (thr->engine->batch == cycle->batch
656-
&& nxt_strcmp(thr->engine->event->name, cycle->engine) == 0)
656+
&& nxt_strcmp(thr->engine->event.name, cycle->engine) == 0)
657657
{
658658
return NXT_OK;
659659
}
660660

661-
event_set = nxt_service_get(cycle->services, "engine", cycle->engine);
662-
if (event_set != NULL) {
663-
return nxt_event_engine_change(thr, task, event_set, cycle->batch);
661+
interface = nxt_service_get(cycle->services, "engine", cycle->engine);
662+
if (interface != NULL) {
663+
return nxt_event_engine_change(thr, task, interface, cycle->batch);
664664
}
665665

666666
return NXT_ERROR;
@@ -789,11 +789,11 @@ nxt_cycle_thread_pool_exit(nxt_task_t *task, void *obj, void *data)
789789
static nxt_int_t
790790
nxt_cycle_conf_init(nxt_thread_t *thr, nxt_cycle_t *cycle)
791791
{
792-
nxt_int_t ret;
793-
nxt_str_t *prefix;
794-
nxt_file_t *file;
795-
nxt_file_name_str_t file_name;
796-
const nxt_event_set_ops_t *event_set;
792+
nxt_int_t ret;
793+
nxt_str_t *prefix;
794+
nxt_file_t *file;
795+
nxt_file_name_str_t file_name;
796+
const nxt_event_interface_t *interface;
797797

798798
cycle->daemon = 1;
799799
cycle->master_process = 1;
@@ -815,12 +815,12 @@ nxt_cycle_conf_init(nxt_thread_t *thr, nxt_cycle_t *cycle)
815815

816816
/* An engine's parameters. */
817817

818-
event_set = nxt_service_get(cycle->services, "engine", cycle->engine);
819-
if (event_set == NULL) {
818+
interface = nxt_service_get(cycle->services, "engine", cycle->engine);
819+
if (interface == NULL) {
820820
return NXT_ERROR;
821821
}
822822

823-
cycle->engine = event_set->name;
823+
cycle->engine = interface->name;
824824

825825
prefix = nxt_file_name_is_absolute(cycle->pid) ? NULL : cycle->prefix;
826826

0 commit comments

Comments
 (0)