You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gm...@apache.org on 2020/09/01 12:57:11 UTC
[qpid-dispatch] branch dev-protocol-adaptors updated:
DISPATCH-1743: qdr_http2_connection_t is now a pooled object
This is an automated email from the ASF dual-hosted git repository.
gmurthy pushed a commit to branch dev-protocol-adaptors
in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git
The following commit(s) were added to refs/heads/dev-protocol-adaptors by this push:
new 3b952b6 DISPATCH-1743: qdr_http2_connection_t is now a pooled object
3b952b6 is described below
commit 3b952b61749093544eb3a6c2f9dd418645e0f7a0
Author: Ganesh Murthy <gm...@apache.org>
AuthorDate: Tue Sep 1 08:55:04 2020 -0400
DISPATCH-1743: qdr_http2_connection_t is now a pooled object
---
src/adaptors/http2/http2_adaptor.c | 23 +++++++----------------
src/adaptors/http2/http2_adaptor.h | 1 +
2 files changed, 8 insertions(+), 16 deletions(-)
diff --git a/src/adaptors/http2/http2_adaptor.c b/src/adaptors/http2/http2_adaptor.c
index ea3ac0a..5d41a4a 100644
--- a/src/adaptors/http2/http2_adaptor.c
+++ b/src/adaptors/http2/http2_adaptor.c
@@ -46,6 +46,7 @@ const char *CONTENT_ENCODING = "content-encoding";
ALLOC_DEFINE(qdr_http2_session_data_t);
ALLOC_DEFINE(qdr_http2_stream_data_t);
+ALLOC_DEFINE(qdr_http2_connection_t);
typedef struct qdr_http_adaptor_t {
qdr_core_t *core;
@@ -202,10 +203,8 @@ void free_qdr_http2_connection(qdr_http2_connection_t* http_conn)
}
nghttp2_session_del(http_conn->session_data->session);
- http_conn->session_data->session = 0;
free_qdr_http2_session_data_t(http_conn->session_data);
- http_conn->session_data = 0;
- free(http_conn);
+ free_qdr_http2_connection_t(http_conn);
}
static qdr_http2_stream_data_t *create_http2_stream_data(qdr_http2_session_data_t *session_data, int32_t stream_id)
@@ -216,6 +215,8 @@ static qdr_http2_stream_data_t *create_http2_stream_data(qdr_http2_session_data_
stream_data->stream_id = stream_id;
stream_data->message = qd_message();
stream_data->session_data = session_data;
+ stream_data->app_properties = qd_compose(QD_PERFORMATIVE_APPLICATION_PROPERTIES, 0);
+ qd_compose_start_map(stream_data->app_properties);
nghttp2_session_set_stream_user_data(session_data->session, stream_id, stream_data);
DEQ_INSERT_TAIL(session_data->streams, stream_data);
return stream_data;
@@ -332,10 +333,6 @@ static int on_begin_headers_callback(nghttp2_session *session,
//
// 2. dynamic receiver on which to receive back the response data for that stream.
//
-
- //
- // TODO - Andrew was asking if the router could expose the function that generates a dynamic address.
- //
qdr_terminus_t *dynamic_source = qdr_terminus(0);
qdr_terminus_set_dynamic(dynamic_source);
stream_data->out_link = qdr_link_first_attach(conn->qdr_conn,
@@ -374,12 +371,6 @@ static int on_header_callback(nghttp2_session *session,
switch (frame->hd.type) {
case NGHTTP2_HEADERS: {
- // Andrew next Monday
- if (!stream_data->app_properties) {
- stream_data->app_properties = qd_compose(QD_PERFORMATIVE_APPLICATION_PROPERTIES, 0);
- qd_compose_start_map(stream_data->app_properties);
- }
-
qd_compose_insert_string_n(stream_data->app_properties, (const char *)name, namelen);
qd_compose_insert_string_n(stream_data->app_properties, (const char *)value, valuelen);
qd_log(http_adaptor->protocol_log_source, QD_LOG_TRACE, "[C%i][S%"PRId32"] HTTP2 HEADER Incoming [%s=%s]", conn->conn_id, stream_data->stream_id, (char *)name, (char *)value);
@@ -409,6 +400,7 @@ static void compose_and_deliver(qdr_http2_stream_data_t *stream_data, qd_compose
qd_message_compose_3(stream_data->message, header_and_prop, stream_data->app_properties, receive_complete);
}
qd_log(http_adaptor->log_source, QD_LOG_TRACE, "[C%i][S%"PRId32"][L%"PRIu64"] Initiating qdr_link_deliver in compose_and_deliver", conn->conn_id, stream_data->stream_id, stream_data->in_link->identity);
+ // Andrew
stream_data->in_dlv = qdr_link_deliver(stream_data->in_link, stream_data->message, 0, false, 0, 0, 0, 0);
qd_log(http_adaptor->log_source, QD_LOG_TRACE, "[C%i][S%"PRId32"][L%"PRIu64"] Routed delivery dlv:%lx", conn->conn_id, stream_data->stream_id, stream_data->in_link->identity, (long) stream_data->in_dlv);
@@ -789,7 +781,7 @@ ssize_t read_callback(nghttp2_session *session,
qdr_http2_connection_t *qdr_http_connection_ingress(qd_http_lsnr_t* listener)
{
- qdr_http2_connection_t* ingress_http_conn = NEW(qdr_http2_connection_t);
+ qdr_http2_connection_t* ingress_http_conn = new_qdr_http2_connection_t();
ZERO(ingress_http_conn);
ingress_http_conn->ingress = true;
ingress_http_conn->context.context = ingress_http_conn;
@@ -1382,7 +1374,6 @@ qd_http_lsnr_t *qd_http2_configure_listener(qd_dispatch_t *qd, const qd_http_bri
{
// TODO - Add lws in the qd_lws_listener.
// TOOD - Separate commit.
- // TODO - use http2 in function names
qd_http_lsnr_t *li = qd_http_lsnr(qd->server, &handle_listener_event);
if (!li) {
qd_log(http_adaptor->log_source, QD_LOG_ERROR, "Unable to create http listener: no memory");
@@ -1417,7 +1408,7 @@ static void on_activate(void *context)
qdr_http2_connection_t *qdr_http_connection_egress(qd_http_connector_t *connector)
{
// TODO - Make this a pooled object.
- qdr_http2_connection_t* egress_http_conn = NEW(qdr_http2_connection_t);
+ qdr_http2_connection_t* egress_http_conn = new_qdr_http2_connection_t();
ZERO(egress_http_conn);
egress_http_conn->activate_timer = qd_timer(http_adaptor->core->qd, on_activate, egress_http_conn);
diff --git a/src/adaptors/http2/http2_adaptor.h b/src/adaptors/http2/http2_adaptor.h
index 65f04b9..473fbbd 100644
--- a/src/adaptors/http2/http2_adaptor.h
+++ b/src/adaptors/http2/http2_adaptor.h
@@ -98,5 +98,6 @@ struct qdr_http2_connection_t {
ALLOC_DECLARE(qdr_http2_session_data_t);
ALLOC_DECLARE(qdr_http2_stream_data_t);
+ALLOC_DECLARE(qdr_http2_connection_t);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org