From 2dccc6927804bcebd6955c04bdcf8a3dc7dcfe9c Mon Sep 17 00:00:00 2001 From: Jeff Elsloo Date: Mon, 19 Jul 2021 15:33:47 -0600 Subject: [PATCH 1/3] Modified slice to leverage APIs to specify buffer size and watermark. --- plugins/experimental/slice/Data.h | 5 +++++ plugins/experimental/slice/Makefile.inc | 9 ++++++++- plugins/experimental/slice/slice.cc | 3 +++ plugins/experimental/slice/util.cc | 3 ++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/plugins/experimental/slice/Data.h b/plugins/experimental/slice/Data.h index f8cdd641ee3..a836da1d5c0 100644 --- a/plugins/experimental/slice/Data.h +++ b/plugins/experimental/slice/Data.h @@ -23,6 +23,7 @@ #include "HttpHeader.h" #include "Range.h" #include "Stage.h" +#include "I_IOBuffer.h" #include @@ -82,6 +83,10 @@ struct Data { int64_t m_bytestosend{0}; // header + content bytes to send int64_t m_bytessent{0}; // number of bytes written to the client + // default buffer size and water mark + int64_t m_buffer_index{BUFFER_SIZE_INDEX_32K}; + int64_t m_buffer_water_mark{DEFAULT_PLUGIN_VC_BUFFER_WATER_MARK}; + bool m_server_block_header_parsed{false}; bool m_server_first_header_parsed{false}; diff --git a/plugins/experimental/slice/Makefile.inc b/plugins/experimental/slice/Makefile.inc index be376ca1c64..f26b621c75b 100644 --- a/plugins/experimental/slice/Makefile.inc +++ b/plugins/experimental/slice/Makefile.inc @@ -42,9 +42,16 @@ experimental_slice_slice_la_SOURCES = \ experimental/slice/util.cc \ experimental/slice/util.h +experimental_slice_slice_la_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -I$(abs_top_srcdir)/iocore/eventsystem + check_PROGRAMS += experimental/slice/test_content_range -experimental_slice_test_content_range_CPPFLAGS = $(AM_CPPFLAGS) -I$(abs_top_srcdir)/tests/include -DUNITTEST +experimental_slice_test_content_range_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + -I$(abs_top_srcdir)/iocore/eventsystem \ + -I$(abs_top_srcdir)/tests/include -DUNITTEST \ experimental_slice_test_content_range_SOURCES = \ experimental/slice/unit-tests/test_content_range.cc \ experimental/slice/ContentRange.cc diff --git a/plugins/experimental/slice/slice.cc b/plugins/experimental/slice/slice.cc index f25e6bb5740..c625233a52a 100644 --- a/plugins/experimental/slice/slice.cc +++ b/plugins/experimental/slice/slice.cc @@ -161,6 +161,9 @@ read_request(TSHttpTxn txnp, Config *const config) } } + data->m_buffer_index = TSPluginVCGetIOBufferIndex(data->m_txnp); // default of m_buffer_index = 32KB + data->m_buffer_water_mark = TSPluginVCGetIOBufferWaterMark(data->m_txnp); // default of m_buffer_water_mark = 0 + if (TSIsDebugTagSet(PLUGIN_NAME)) { int len = 0; char *const urlstr = TSUrlStringGet(data->m_urlbuf, data->m_urlloc, &len); diff --git a/plugins/experimental/slice/util.cc b/plugins/experimental/slice/util.cc index 15c68b4f95f..f99ba03d552 100644 --- a/plugins/experimental/slice/util.cc +++ b/plugins/experimental/slice/util.cc @@ -86,7 +86,8 @@ request_block(TSCont contp, Data *const data) } // create virtual connection back into ATS - TSVConn const upvc = TSHttpConnectWithPluginId(reinterpret_cast(&data->m_client_ip), PLUGIN_NAME, 0); + TSVConn const upvc = TSHttpConnectPlugin(reinterpret_cast(&data->m_client_ip), PLUGIN_NAME, 0, data->m_buffer_index, + data->m_buffer_water_mark); int const hlen = TSHttpHdrLengthGet(header.m_buffer, header.m_lochdr); From 20b574fd2d87912e849607c4ae9f31d5a7280b64 Mon Sep 17 00:00:00 2001 From: Jeff Elsloo Date: Thu, 29 Jul 2021 11:49:17 -0600 Subject: [PATCH 2/3] * Refactored dependencies based on changes made in PR #8088 --- plugins/experimental/slice/Data.h | 5 ++--- plugins/experimental/slice/slice.cc | 4 ++-- plugins/experimental/slice/util.cc | 10 ++++++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/plugins/experimental/slice/Data.h b/plugins/experimental/slice/Data.h index a836da1d5c0..496ebdc3964 100644 --- a/plugins/experimental/slice/Data.h +++ b/plugins/experimental/slice/Data.h @@ -23,7 +23,6 @@ #include "HttpHeader.h" #include "Range.h" #include "Stage.h" -#include "I_IOBuffer.h" #include @@ -84,8 +83,8 @@ struct Data { int64_t m_bytessent{0}; // number of bytes written to the client // default buffer size and water mark - int64_t m_buffer_index{BUFFER_SIZE_INDEX_32K}; - int64_t m_buffer_water_mark{DEFAULT_PLUGIN_VC_BUFFER_WATER_MARK}; + TSIOBufferSizeIndex m_buffer_index{TS_IOBUFFER_SIZE_INDEX_32K}; + TSIOBufferWaterMark m_buffer_water_mark{TS_IOBUFFER_WATER_MARK_PLUGIN_VC_DEFAULT}; bool m_server_block_header_parsed{false}; bool m_server_first_header_parsed{false}; diff --git a/plugins/experimental/slice/slice.cc b/plugins/experimental/slice/slice.cc index c625233a52a..4b71363c1c3 100644 --- a/plugins/experimental/slice/slice.cc +++ b/plugins/experimental/slice/slice.cc @@ -161,8 +161,8 @@ read_request(TSHttpTxn txnp, Config *const config) } } - data->m_buffer_index = TSPluginVCGetIOBufferIndex(data->m_txnp); // default of m_buffer_index = 32KB - data->m_buffer_water_mark = TSPluginVCGetIOBufferWaterMark(data->m_txnp); // default of m_buffer_water_mark = 0 + data->m_buffer_index = TSPluginVCIOBufferIndexGet(data->m_txnp); // default of m_buffer_index = 32KB + data->m_buffer_water_mark = TSPluginVCIOBufferWaterMarkGet(data->m_txnp); // default of m_buffer_water_mark = 0 if (TSIsDebugTagSet(PLUGIN_NAME)) { int len = 0; diff --git a/plugins/experimental/slice/util.cc b/plugins/experimental/slice/util.cc index f99ba03d552..4ca86c3d1a4 100644 --- a/plugins/experimental/slice/util.cc +++ b/plugins/experimental/slice/util.cc @@ -86,8 +86,14 @@ request_block(TSCont contp, Data *const data) } // create virtual connection back into ATS - TSVConn const upvc = TSHttpConnectPlugin(reinterpret_cast(&data->m_client_ip), PLUGIN_NAME, 0, data->m_buffer_index, - data->m_buffer_water_mark); + TSHttpConnectOptions options = TSHttpConnectOptionsGet(TS_CONNECT_PLUGIN); + options.addr = reinterpret_cast(&data->m_client_ip); + options.tag = PLUGIN_NAME; + options.id = 0; + options.buffer_index = data->m_buffer_index; + options.buffer_water_mark = data->m_buffer_water_mark; + + TSVConn const upvc = TSHttpConnectPlugin(&options); int const hlen = TSHttpHdrLengthGet(header.m_buffer, header.m_lochdr); From 5fba7d03479ad251d74e97686ceac480a35a609e Mon Sep 17 00:00:00 2001 From: Jeff Elsloo Date: Wed, 4 Aug 2021 09:47:08 -0600 Subject: [PATCH 3/3] Reverted changes to Makefile.inc. --- plugins/experimental/slice/Makefile.inc | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/plugins/experimental/slice/Makefile.inc b/plugins/experimental/slice/Makefile.inc index f26b621c75b..be376ca1c64 100644 --- a/plugins/experimental/slice/Makefile.inc +++ b/plugins/experimental/slice/Makefile.inc @@ -42,16 +42,9 @@ experimental_slice_slice_la_SOURCES = \ experimental/slice/util.cc \ experimental/slice/util.h -experimental_slice_slice_la_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - -I$(abs_top_srcdir)/iocore/eventsystem - check_PROGRAMS += experimental/slice/test_content_range -experimental_slice_test_content_range_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - -I$(abs_top_srcdir)/iocore/eventsystem \ - -I$(abs_top_srcdir)/tests/include -DUNITTEST \ +experimental_slice_test_content_range_CPPFLAGS = $(AM_CPPFLAGS) -I$(abs_top_srcdir)/tests/include -DUNITTEST experimental_slice_test_content_range_SOURCES = \ experimental/slice/unit-tests/test_content_range.cc \ experimental/slice/ContentRange.cc