session: use app cb function wrappers

Change-Id: I77ad9eb4d4c7699397aa4be6a973ef37c60db4c5
Signed-off-by: Florin Coras <fcoras@cisco.com>
This commit is contained in:
Florin Coras
2019-04-02 11:38:51 -07:00
committed by Dave Barach
parent f6adf1f8db
commit 69b68ef1a9
7 changed files with 22 additions and 26 deletions

View File

@ -1068,18 +1068,15 @@ quic_session_connected_callback (u32 quic_app_index, u32 ho_ctx_idx,
ho_ctx = quic_ctx_half_open_get (ho_ctx_idx);
if (is_fail)
{
int (*cb_fn) (u32, u32, session_t *, u8), rv = 0;
u32 wrk_index, api_context;
u32 api_context;
int rv = 0;
wrk_index = ho_ctx->c_quic_ctx_id.parent_app_wrk_idx;
app_wrk =
app_worker_get_if_valid (ho_ctx->c_quic_ctx_id.parent_app_wrk_idx);
if (app_wrk)
{
api_context = ho_ctx->c_s_index;
app = application_get (app_wrk->app_index);
cb_fn = app->cb_fns.session_connected_callback;
rv = cb_fn (wrk_index, api_context, 0, 1 /* failed */ );
app_worker_connect_notify (app_wrk, 0, api_context);
}
quic_ctx_half_open_reader_unlock ();
quic_ctx_half_open_free (ho_ctx_idx);

View File

@ -225,6 +225,7 @@ int app_worker_init_connected (app_worker_t * app_wrk, session_t * s);
int app_worker_connect_notify (app_worker_t * app_wrk, session_t * s,
u32 opaque);
int app_worker_close_notify (app_worker_t * app_wrk, session_t * s);
int app_worker_reset_notify (app_worker_t * app_wrk, session_t * s);
int app_worker_builtin_rx (app_worker_t * app_wrk, session_t * s);
segment_manager_t *app_worker_get_listen_segment_manager (app_worker_t *,
session_t *);

View File

@ -329,6 +329,14 @@ app_worker_close_notify (app_worker_t * app_wrk, session_t * s)
return 0;
}
int
app_worker_reset_notify (app_worker_t * app_wrk, session_t * s)
{
application_t *app = application_get (app_wrk->app_index);
app->cb_fns.session_reset_callback (s);
return 0;
}
int
app_worker_builtin_rx (app_worker_t * app_wrk, session_t * s)
{
@ -553,10 +561,7 @@ app_send_io_evt_rx (app_worker_t * app_wrk, session_t * s, u8 lock)
}
if (app_worker_application_is_builtin (app_wrk))
{
application_t *app = application_get (app_wrk->app_index);
return app->cb_fns.builtin_app_rx_callback (s);
}
return app_worker_builtin_rx (app_wrk, s);
if (svm_fifo_has_event (s->rx_fifo))
return 0;

View File

@ -825,17 +825,16 @@ session_transport_closed_notify (transport_connection_t * tc)
void
session_transport_reset_notify (transport_connection_t * tc)
{
session_t *s;
app_worker_t *app_wrk;
application_t *app;
session_t *s;
s = session_get (tc->s_index, tc->thread_index);
svm_fifo_dequeue_drop_all (s->tx_fifo);
if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING)
return;
s->session_state = SESSION_STATE_TRANSPORT_CLOSING;
app_wrk = app_worker_get (s->app_wrk_index);
app = application_get (app_wrk->app_index);
app->cb_fns.session_reset_callback (s);
app_worker_reset_notify (app_wrk, s);
}
int

View File

@ -362,8 +362,7 @@ static int
clear_session (session_t * s)
{
app_worker_t *server_wrk = app_worker_get (s->app_wrk_index);
application_t *server = application_get (server_wrk->app_index);
server->cb_fns.session_disconnect_callback (s);
app_worker_close_notify (server_wrk, s);
return 0;
}

View File

@ -88,8 +88,7 @@ session_mq_accepted_reply_handler (void *data)
/* Closed while waiting for app to reply. Resend disconnect */
if (old_state >= SESSION_STATE_TRANSPORT_CLOSING)
{
application_t *app = application_get (app_wrk->app_index);
app->cb_fns.session_disconnect_callback (s);
app_worker_close_notify (app_wrk, s);
s->session_state = old_state;
return;
}
@ -289,7 +288,7 @@ session_mq_worker_update_handler (void *data)
app_worker_lock_and_send_event (app_wrk, s, SESSION_IO_EVT_RX);
if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSING)
app->cb_fns.session_disconnect_callback (s);
app_worker_close_notify (app_wrk, s);
}
vlib_node_registration_t session_queue_node;

View File

@ -431,19 +431,15 @@ tls_session_connected_callback (u32 tls_app_index, u32 ho_ctx_index,
if (is_fail)
{
int (*cb_fn) (u32, u32, session_t *, u8), rv = 0;
u32 wrk_index, api_context;
app_worker_t *app_wrk;
application_t *app;
u32 api_context;
int rv = 0;
wrk_index = ho_ctx->parent_app_wrk_index;
app_wrk = app_worker_get_if_valid (ho_ctx->parent_app_wrk_index);
if (app_wrk)
{
api_context = ho_ctx->c_s_index;
app = application_get (app_wrk->app_index);
cb_fn = app->cb_fns.session_connected_callback;
rv = cb_fn (wrk_index, api_context, 0, 1 /* failed */ );
app_worker_connect_notify (app_wrk, 0, api_context);
}
tls_ctx_half_open_reader_unlock ();
tls_ctx_half_open_free (ho_ctx_index);