C99 style declaration of connection states.

This commit is contained in:
Igor Sysoev
2017-06-06 18:57:58 +03:00
parent 49e9049ed2
commit d0c72e0726
9 changed files with 80 additions and 157 deletions

View File

@@ -827,16 +827,13 @@ nxt_app_delivery_handler(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_app_delivery_write_state static const nxt_event_conn_state_t nxt_app_delivery_write_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_app_delivery_ready,
NXT_EVENT_TIMER_AUTORESET, .error_handler = nxt_app_delivery_error,
nxt_app_delivery_ready, .timer_handler = nxt_app_delivery_timeout,
NULL, .timer_value = nxt_app_delivery_timer_value,
nxt_app_delivery_error, .timer_data = 0,
.timer_autoreset = 1,
nxt_app_delivery_timeout,
nxt_app_delivery_timer_value,
0,
}; };
@@ -871,16 +868,7 @@ nxt_app_delivery_ready(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_app_delivery_close_state static const nxt_event_conn_state_t nxt_app_delivery_close_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_app_close_request,
NXT_EVENT_TIMER_NO_AUTORESET,
nxt_app_close_request,
NULL,
NULL,
NULL,
NULL,
0,
}; };

View File

@@ -240,16 +240,13 @@ nxt_controller_conn_init(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_controller_conn_read_state static const nxt_event_conn_state_t nxt_controller_conn_read_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_controller_conn_read,
NXT_EVENT_TIMER_NO_AUTORESET, .close_handler = nxt_controller_conn_close,
.error_handler = nxt_controller_conn_read_error,
nxt_controller_conn_read, .timer_handler = nxt_controller_conn_read_timeout,
nxt_controller_conn_close, .timer_value = nxt_controller_conn_timeout_value,
nxt_controller_conn_read_error, .timer_data = 60 * 1000,
nxt_controller_conn_read_timeout,
nxt_controller_conn_timeout_value,
60 * 1000,
}; };
@@ -365,16 +362,14 @@ nxt_controller_conn_read_timeout(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_controller_conn_body_read_state static const nxt_event_conn_state_t nxt_controller_conn_body_read_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_controller_conn_body_read,
NXT_EVENT_TIMER_AUTORESET, .close_handler = nxt_controller_conn_close,
.error_handler = nxt_controller_conn_read_error,
nxt_controller_conn_body_read, .timer_handler = nxt_controller_conn_read_timeout,
nxt_controller_conn_close, .timer_value = nxt_controller_conn_timeout_value,
nxt_controller_conn_read_error, .timer_data = 60 * 1000,
.timer_autoreset = 1,
nxt_controller_conn_read_timeout,
nxt_controller_conn_timeout_value,
60 * 1000,
}; };
@@ -409,16 +404,13 @@ nxt_controller_conn_body_read(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_controller_conn_write_state static const nxt_event_conn_state_t nxt_controller_conn_write_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_controller_conn_write,
NXT_EVENT_TIMER_AUTORESET, .error_handler = nxt_controller_conn_write_error,
nxt_controller_conn_write, .timer_handler = nxt_controller_conn_write_timeout,
NULL, .timer_value = nxt_controller_conn_timeout_value,
nxt_controller_conn_write_error, .timer_data = 60 * 1000,
.timer_autoreset = 1,
nxt_controller_conn_write_timeout,
nxt_controller_conn_timeout_value,
60 * 1000,
}; };
@@ -479,16 +471,7 @@ nxt_controller_conn_write_timeout(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_controller_conn_close_state static const nxt_event_conn_state_t nxt_controller_conn_close_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_controller_conn_free,
NXT_EVENT_TIMER_NO_AUTORESET,
nxt_controller_conn_free,
NULL,
NULL,
NULL,
NULL,
0,
}; };

View File

@@ -12,18 +12,7 @@ typedef nxt_msec_t (*nxt_event_conn_timer_val_t)(nxt_event_conn_t *c,
uintptr_t data); uintptr_t data);
#define NXT_EVENT_NO_BUF_PROCESS 0
#define NXT_EVENT_BUF_PROCESS 1
#define NXT_EVENT_BUF_COMPLETION 1
#define NXT_EVENT_TIMER_AUTORESET 1
#define NXT_EVENT_TIMER_NO_AUTORESET 0
typedef struct { typedef struct {
uint8_t process_buffers;
uint8_t autoreset_timer;
nxt_work_handler_t ready_handler; nxt_work_handler_t ready_handler;
nxt_work_handler_t close_handler; nxt_work_handler_t close_handler;
nxt_work_handler_t error_handler; nxt_work_handler_t error_handler;
@@ -31,6 +20,8 @@ typedef struct {
nxt_work_handler_t timer_handler; nxt_work_handler_t timer_handler;
nxt_event_conn_timer_val_t timer_value; nxt_event_conn_timer_val_t timer_value;
uintptr_t timer_data; uintptr_t timer_data;
uint8_t timer_autoreset;
} nxt_event_conn_state_t; } nxt_event_conn_state_t;

View File

@@ -128,7 +128,7 @@ nxt_event_conn_connect_test(nxt_task_t *task, void *obj, void *data)
nxt_fd_event_block_write(task->thread->engine, &c->socket); nxt_fd_event_block_write(task->thread->engine, &c->socket);
if (c->write_state->autoreset_timer) { if (c->write_state->timer_autoreset) {
nxt_timer_disable(task->thread->engine, &c->write_timer); nxt_timer_disable(task->thread->engine, &c->write_timer);
} }

View File

@@ -184,7 +184,7 @@ nxt_event_conn_job_sendfile_return(nxt_task_t *task, void *obj, void *data)
/* The job must be destroyed before connection error handler. */ /* The job must be destroyed before connection error handler. */
nxt_job_destroy(task, jbs); nxt_job_destroy(task, jbs);
if (c->write_state->process_buffers) { if (0 /* STUB: c->write_state->process_buffers */) {
b = nxt_event_conn_job_sendfile_completion(task, c, b); b = nxt_event_conn_job_sendfile_completion(task, c, b);
done = (b == NULL); done = (b == NULL);
@@ -205,7 +205,7 @@ nxt_event_conn_job_sendfile_return(nxt_task_t *task, void *obj, void *data)
} }
} }
if (sent != 0 && c->write_state->autoreset_timer) { if (sent != 0 && c->write_state->timer_autoreset) {
nxt_timer_disable(task->thread->engine, &c->write_timer); nxt_timer_disable(task->thread->engine, &c->write_timer);
} }

View File

@@ -142,16 +142,13 @@ nxt_event_conn_proxy(nxt_task_t *task, nxt_event_conn_proxy_t *p)
static const nxt_event_conn_state_t nxt_event_conn_proxy_client_wait_state static const nxt_event_conn_state_t nxt_event_conn_proxy_client_wait_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_event_conn_proxy_client_buffer_alloc,
NXT_EVENT_TIMER_NO_AUTORESET, .close_handler = nxt_event_conn_proxy_close,
.error_handler = nxt_event_conn_proxy_error,
nxt_event_conn_proxy_client_buffer_alloc, .timer_handler = nxt_event_conn_proxy_read_timeout,
nxt_event_conn_proxy_close, .timer_value = nxt_event_conn_proxy_timeout_value,
nxt_event_conn_proxy_error, .timer_data = offsetof(nxt_event_conn_proxy_t, client_wait_timeout),
nxt_event_conn_proxy_read_timeout,
nxt_event_conn_proxy_timeout_value,
offsetof(nxt_event_conn_proxy_t, client_wait_timeout),
}; };
@@ -210,16 +207,14 @@ static const nxt_event_conn_state_t
nxt_event_conn_proxy_client_first_read_state nxt_event_conn_proxy_client_first_read_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_BUF_PROCESS, .ready_handler = nxt_event_conn_proxy_peer_connect,
NXT_EVENT_TIMER_AUTORESET, .close_handler = nxt_event_conn_proxy_close,
.error_handler = nxt_event_conn_proxy_error,
nxt_event_conn_proxy_peer_connect, .timer_handler = nxt_event_conn_proxy_read_timeout,
nxt_event_conn_proxy_close, .timer_value = nxt_event_conn_proxy_timeout_value,
nxt_event_conn_proxy_error, .timer_data = offsetof(nxt_event_conn_proxy_t, client_wait_timeout),
.timer_autoreset = 1,
nxt_event_conn_proxy_read_timeout,
nxt_event_conn_proxy_timeout_value,
offsetof(nxt_event_conn_proxy_t, client_wait_timeout),
}; };
@@ -250,16 +245,14 @@ nxt_event_conn_proxy_peer_connect(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_event_conn_proxy_peer_connect_state static const nxt_event_conn_state_t nxt_event_conn_proxy_peer_connect_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_event_conn_proxy_connected,
NXT_EVENT_TIMER_AUTORESET, .close_handler = nxt_event_conn_proxy_refused,
.error_handler = nxt_event_conn_proxy_error,
nxt_event_conn_proxy_connected, .timer_handler = nxt_event_conn_proxy_write_timeout,
nxt_event_conn_proxy_refused, .timer_value = nxt_event_conn_proxy_timeout_value,
nxt_event_conn_proxy_error, .timer_data = offsetof(nxt_event_conn_proxy_t, connect_timeout),
.timer_autoreset = 1,
nxt_event_conn_proxy_write_timeout,
nxt_event_conn_proxy_timeout_value,
offsetof(nxt_event_conn_proxy_t, connect_timeout),
}; };
@@ -303,16 +296,13 @@ nxt_event_conn_proxy_connected(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_event_conn_proxy_peer_wait_state static const nxt_event_conn_state_t nxt_event_conn_proxy_peer_wait_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_event_conn_proxy_peer_read,
NXT_EVENT_TIMER_NO_AUTORESET, .close_handler = nxt_event_conn_proxy_close,
.error_handler = nxt_event_conn_proxy_error,
nxt_event_conn_proxy_peer_read, .timer_handler = nxt_event_conn_proxy_read_timeout,
nxt_event_conn_proxy_close, .timer_value = nxt_event_conn_proxy_timeout_value,
nxt_event_conn_proxy_error, .timer_data = offsetof(nxt_event_conn_proxy_t, peer_wait_timeout),
nxt_event_conn_proxy_read_timeout,
nxt_event_conn_proxy_timeout_value,
offsetof(nxt_event_conn_proxy_t, peer_wait_timeout),
}; };
@@ -357,16 +347,9 @@ nxt_event_conn_proxy_peer_read(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_event_conn_proxy_client_read_state static const nxt_event_conn_state_t nxt_event_conn_proxy_client_read_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_BUF_PROCESS, .ready_handler = nxt_event_conn_proxy_client_read_ready,
NXT_EVENT_TIMER_NO_AUTORESET, .close_handler = nxt_event_conn_proxy_close,
.error_handler = nxt_event_conn_proxy_read_error,
nxt_event_conn_proxy_client_read_ready,
nxt_event_conn_proxy_close,
nxt_event_conn_proxy_read_error,
NULL,
NULL,
0,
}; };
@@ -389,16 +372,9 @@ nxt_event_conn_proxy_client_read_ready(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_event_conn_proxy_peer_read_state static const nxt_event_conn_state_t nxt_event_conn_proxy_peer_read_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_BUF_PROCESS, .ready_handler = nxt_event_conn_proxy_peer_read_ready,
NXT_EVENT_TIMER_NO_AUTORESET, .close_handler = nxt_event_conn_proxy_close,
.error_handler = nxt_event_conn_proxy_read_error,
nxt_event_conn_proxy_peer_read_ready,
nxt_event_conn_proxy_close,
nxt_event_conn_proxy_read_error,
NULL,
NULL,
0,
}; };
@@ -556,16 +532,13 @@ nxt_event_conn_proxy_read(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_event_conn_proxy_client_write_state static const nxt_event_conn_state_t nxt_event_conn_proxy_client_write_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_event_conn_proxy_client_write_ready,
NXT_EVENT_TIMER_AUTORESET, .error_handler = nxt_event_conn_proxy_write_error,
nxt_event_conn_proxy_client_write_ready, .timer_handler = nxt_event_conn_proxy_write_timeout,
NULL, .timer_value = nxt_event_conn_proxy_timeout_value,
nxt_event_conn_proxy_write_error, .timer_data = offsetof(nxt_event_conn_proxy_t, client_write_timeout),
.timer_autoreset = 1,
nxt_event_conn_proxy_write_timeout,
nxt_event_conn_proxy_timeout_value,
offsetof(nxt_event_conn_proxy_t, client_write_timeout),
}; };
@@ -588,16 +561,13 @@ nxt_event_conn_proxy_client_write_ready(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_event_conn_proxy_peer_write_state static const nxt_event_conn_state_t nxt_event_conn_proxy_peer_write_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_event_conn_proxy_peer_write_ready,
NXT_EVENT_TIMER_AUTORESET, .error_handler = nxt_event_conn_proxy_write_error,
nxt_event_conn_proxy_peer_write_ready, .timer_handler = nxt_event_conn_proxy_write_timeout,
NULL, .timer_value = nxt_event_conn_proxy_timeout_value,
nxt_event_conn_proxy_write_error, .timer_data = offsetof(nxt_event_conn_proxy_t, peer_write_timeout),
.timer_autoreset = 1,
nxt_event_conn_proxy_write_timeout,
nxt_event_conn_proxy_timeout_value,
offsetof(nxt_event_conn_proxy_t, peer_write_timeout),
}; };
@@ -993,16 +963,7 @@ nxt_event_conn_proxy_write_error(nxt_task_t *task, void *obj, void *data)
static const nxt_event_conn_state_t nxt_event_conn_proxy_close_state static const nxt_event_conn_state_t nxt_event_conn_proxy_close_state
nxt_aligned(64) = nxt_aligned(64) =
{ {
NXT_EVENT_NO_BUF_PROCESS, .ready_handler = nxt_event_conn_proxy_completion,
NXT_EVENT_TIMER_NO_AUTORESET,
nxt_event_conn_proxy_completion,
NULL,
NULL,
NULL,
NULL,
0,
}; };

View File

@@ -72,7 +72,7 @@ nxt_event_conn_io_read(nxt_task_t *task, void *obj, void *data)
nxt_fd_event_block_read(engine, &c->socket); nxt_fd_event_block_read(engine, &c->socket);
if (state->autoreset_timer) { if (state->timer_autoreset) {
nxt_timer_disable(engine, &c->read_timer); nxt_timer_disable(engine, &c->read_timer);
} }

View File

@@ -77,7 +77,7 @@ nxt_conn_io_write(nxt_task_t *task, void *obj, void *data)
nxt_debug(task, "event conn: %i sent:%z", ret, sb.sent); nxt_debug(task, "event conn: %i sent:%z", ret, sb.sent);
if (sb.sent != 0) { if (sb.sent != 0) {
if (c->write_state->autoreset_timer) { if (c->write_state->timer_autoreset) {
nxt_timer_disable(engine, &c->write_timer); nxt_timer_disable(engine, &c->write_timer);
} }
} }

View File

@@ -902,7 +902,7 @@ nxt_kqueue_event_conn_connected(nxt_task_t *task, void *obj, void *data)
c->socket.write = NXT_EVENT_BLOCKED; c->socket.write = NXT_EVENT_BLOCKED;
if (c->write_state->autoreset_timer) { if (c->write_state->timer_autoreset) {
nxt_timer_disable(task->thread->engine, &c->write_timer); nxt_timer_disable(task->thread->engine, &c->write_timer);
} }