[TS-2664] Removing initializable value code
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/5622e8d4 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/5622e8d4 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/5622e8d4 Branch: refs/heads/master Commit: 5622e8d43467a08fc03b921024b8c6a80851cd85 Parents: 5343132 Author: Brian Geffon <bri...@apache.org> Authored: Tue Mar 25 16:42:14 2014 -0700 Committer: Brian Geffon <bri...@apache.org> Committed: Tue Mar 25 16:42:14 2014 -0700 ---------------------------------------------------------------------- configure.ac | 1 - lib/atscppapi/examples/Makefile.am | 3 +- lib/atscppapi/examples/data_caching/Makefile.am | 34 ------ .../examples/data_caching/data_caching.cc | 98 ------------------ lib/atscppapi/src/ClientRequest.cc | 1 - lib/atscppapi/src/Headers.cc | 1 - lib/atscppapi/src/Makefile.am | 1 - lib/atscppapi/src/Request.cc | 24 +++-- lib/atscppapi/src/Response.cc | 44 +++----- lib/atscppapi/src/Transaction.cc | 1 - lib/atscppapi/src/Url.cc | 103 +++++++++---------- lib/atscppapi/src/include/atscppapi/Response.h | 2 +- lib/atscppapi/src/include/atscppapi/Url.h | 10 +- lib/atscppapi/src/include/atscppapi/utils.h | 6 -- lib/atscppapi/src/utils.cc | 2 - lib/atscppapi/src/utils_internal.cc | 7 -- 16 files changed, 82 insertions(+), 256 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/configure.ac ---------------------------------------------------------------------- diff --git a/configure.ac b/configure.ac index 7710c5a..6883cb6 100644 --- a/configure.ac +++ b/configure.ac @@ -1937,7 +1937,6 @@ AC_CONFIG_FILES([ lib/atscppapi/examples/clientredirect/Makefile lib/atscppapi/examples/clientrequest/Makefile lib/atscppapi/examples/customresponse/Makefile - lib/atscppapi/examples/data_caching/Makefile lib/atscppapi/examples/globalhook/Makefile lib/atscppapi/examples/gzip_transformation/Makefile lib/atscppapi/examples/helloworld/Makefile http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/examples/Makefile.am ---------------------------------------------------------------------- diff --git a/lib/atscppapi/examples/Makefile.am b/lib/atscppapi/examples/Makefile.am index 9cbf7d6..804a346 100644 --- a/lib/atscppapi/examples/Makefile.am +++ b/lib/atscppapi/examples/Makefile.am @@ -19,7 +19,6 @@ SUBDIRS = helloworld \ globalhook \ transactionhook \ multiple_transaction_hooks \ - data_caching \ clientrequest \ serverresponse \ clientredirect \ @@ -34,4 +33,4 @@ SUBDIRS = helloworld \ timeout_example \ internal_transaction_handling \ async_timer \ - intercept \ No newline at end of file + intercept http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/examples/data_caching/Makefile.am ---------------------------------------------------------------------- diff --git a/lib/atscppapi/examples/data_caching/Makefile.am b/lib/atscppapi/examples/data_caching/Makefile.am deleted file mode 100644 index a0a8cd7..0000000 --- a/lib/atscppapi/examples/data_caching/Makefile.am +++ /dev/null @@ -1,34 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -AM_CPPFLAGS = \ - -I$(top_srcdir)/proxy/api \ - -I$(top_builddir)/lib/ts \ - -I$(top_srcdir)/lib/ts \ - -I$(top_srcdir)/lib/atscppapi/src/include \ - -Wno-unused-variable - -target=data_caching.so -pkglibdir = ${pkglibexecdir} -pkglib_LTLIBRARIES = data_caching.la -data_caching_la_SOURCES = data_caching.cc -data_caching_la_LDFLAGS = -module -avoid-version -shared -L$(top_srcdir)/lib/atscppapi/src/ -latscppapi - -all: - ln -sf .libs/$(target) - -clean-local: - rm -f $(target) http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/examples/data_caching/data_caching.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/examples/data_caching/data_caching.cc b/lib/atscppapi/examples/data_caching/data_caching.cc deleted file mode 100644 index e5c701e..0000000 --- a/lib/atscppapi/examples/data_caching/data_caching.cc +++ /dev/null @@ -1,98 +0,0 @@ -/** - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - */ - -#include <iostream> -#include <cstdlib> -#include <atscppapi/GlobalPlugin.h> -#include <atscppapi/ClientRequest.h> -#include <atscppapi/utils.h> - -#include <ts/ts.h> - -using namespace atscppapi; -using namespace std; - -namespace { - -const string SPECIAL_HEADER("Special-Header"); - -} - -class GlobalHookPlugin : public GlobalPlugin { -public: - GlobalHookPlugin() { - registerHook(HOOK_READ_REQUEST_HEADERS_PRE_REMAP); - registerHook(HOOK_SEND_RESPONSE_HEADERS); - } - - virtual void handleReadRequestHeadersPreRemap(Transaction &transaction) { - cout << "Hello from handleReadRequesHeadersPreRemap!" << endl; - checkForSpecialHeader(transaction.getClientRequest().getHeaders()); - transaction.resume(); - } - - virtual void handleSendResponseHeaders(Transaction &transaction) { - cout << "Hello from handleSendResponseHeaders!" << endl; - checkForSpecialHeader(transaction.getClientRequest().getHeaders()); - transaction.resume(); - } - -private: - void checkForSpecialHeader(Headers &headers) { - Headers::iterator iter = headers.find(SPECIAL_HEADER); - if (iter == headers.end()) { - cout << "Special header is absent" << endl; - } else { - cout << "Special header is present with value " << (*iter).str() << endl; - } - } -}; - -namespace { - -int handlePostRemap(TSCont cont ATSCPPAPI_UNUSED, TSEvent event ATSCPPAPI_UNUSED, void *edata) { - TSHttpTxn txn = static_cast<TSHttpTxn>(edata); - TSMBuffer hdr_buf; - TSMLoc hdr_loc, field_loc; - TSHttpTxnClientReqGet(txn, &hdr_buf, &hdr_loc); - int nullTerminatedStringLength = -1; - TSMimeHdrFieldCreateNamed(hdr_buf, hdr_loc, SPECIAL_HEADER.c_str(), nullTerminatedStringLength, &field_loc); - const char *value = "foo"; - int insertAtBeginningIndex = 0; - TSMimeHdrFieldValueStringInsert(hdr_buf, hdr_loc, field_loc, insertAtBeginningIndex, value, - nullTerminatedStringLength); - TSMimeHdrFieldAppend(hdr_buf, hdr_loc, field_loc); - TSHandleMLocRelease(hdr_buf, hdr_loc, field_loc); - TSMLoc hdr_loc_null_parent = NULL; - TSHandleMLocRelease(hdr_buf, hdr_loc_null_parent, hdr_loc); - TSHttpTxnReenable(txn, TS_EVENT_HTTP_CONTINUE); - return 0; -} - -} - -void TSPluginInit(int argc ATSCPPAPI_UNUSED, const char *argv[] ATSCPPAPI_UNUSED) { - int do_overwrite = 1; - setenv(utils::DISABLE_DATA_CACHING_ENV_FLAG.c_str(), "true", do_overwrite); - - new GlobalHookPlugin(); - - TSMutex nullMutex = NULL; - TSCont globalCont = TSContCreate(handlePostRemap, nullMutex); - TSHttpHookAdd(TS_HTTP_POST_REMAP_HOOK, globalCont); -} http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/ClientRequest.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/ClientRequest.cc b/lib/atscppapi/src/ClientRequest.cc index 8f2e602..32d7306 100644 --- a/lib/atscppapi/src/ClientRequest.cc +++ b/lib/atscppapi/src/ClientRequest.cc @@ -24,7 +24,6 @@ #include <cstdlib> #include <ts/ts.h> #include "atscppapi/noncopyable.h" -#include "InitializableValue.h" #include "logging_internal.h" using namespace atscppapi; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/Headers.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/Headers.cc b/lib/atscppapi/src/Headers.cc index 7be2a90..96afbb9 100644 --- a/lib/atscppapi/src/Headers.cc +++ b/lib/atscppapi/src/Headers.cc @@ -21,7 +21,6 @@ */ #include "atscppapi/Headers.h" #include "atscppapi/shared_ptr.h" -#include "InitializableValue.h" #include "logging_internal.h" #include <string> #include <cstring> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/Makefile.am ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/Makefile.am b/lib/atscppapi/src/Makefile.am index b2c721b..8136744 100644 --- a/lib/atscppapi/src/Makefile.am +++ b/lib/atscppapi/src/Makefile.am @@ -41,7 +41,6 @@ libatscppapi_la_SOURCES = GlobalPlugin.cc \ Url.cc \ HttpVersion.cc \ HttpMethod.cc \ - InitializableValue.cc \ Response.cc \ TransformationPlugin.cc \ Logger.cc \ http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/Request.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/Request.cc b/lib/atscppapi/src/Request.cc index ec36790..f885690 100644 --- a/lib/atscppapi/src/Request.cc +++ b/lib/atscppapi/src/Request.cc @@ -22,7 +22,6 @@ #include "atscppapi/Request.h" #include <ts/ts.h> #include "atscppapi/noncopyable.h" -#include "InitializableValue.h" #include "utils_internal.h" #include "logging_internal.h" @@ -38,11 +37,12 @@ struct atscppapi::RequestState: noncopyable { TSMLoc url_loc_; Url url_; Headers headers_; - InitializableValue<HttpMethod> method_; - InitializableValue<HttpVersion> version_; + /* method and version are stored here for the case of an unbound request */ + HttpMethod method_; + HttpVersion version_; bool destroy_buf_; - RequestState() : hdr_buf_(NULL), hdr_loc_(NULL), url_loc_(NULL), method_(HTTP_METHOD_UNKNOWN, false), - version_(HTTP_VERSION_UNKNOWN, false), destroy_buf_(false) { } + RequestState() : hdr_buf_(NULL), hdr_loc_(NULL), url_loc_(NULL), method_(HTTP_METHOD_UNKNOWN), + version_(HTTP_VERSION_UNKNOWN), destroy_buf_(false) { } }; Request::Request() { @@ -57,8 +57,8 @@ Request::Request(void *hdr_buf, void *hdr_loc) { Request::Request(const string &url_str, HttpMethod method, HttpVersion version) { state_ = new RequestState(); - state_->method_.setValue(method); - state_->version_.setValue(version); + state_->method_ = method; + state_->version_ = version; state_->destroy_buf_ = true; state_->hdr_buf_ = TSMBufferCreate(); if (TSUrlCreate(state_->hdr_buf_, &state_->url_loc_) == TS_SUCCESS) { @@ -98,7 +98,7 @@ void Request::init(void *hdr_buf, void *hdr_loc) { } HttpMethod Request::getMethod() const { - if (!state_->method_.isInitialized() && state_->hdr_buf_ && state_->hdr_loc_) { + if (state_->hdr_buf_ && state_->hdr_loc_) { int method_len; const char *method_str = TSHttpHdrMethodGet(state_->hdr_buf_, state_->hdr_loc_, &method_len); if (method_str && method_len) { @@ -123,6 +123,8 @@ HttpMethod Request::getMethod() const { } else if (method_str == TS_HTTP_METHOD_TRACE) { state_->method_ = HTTP_METHOD_TRACE; } + LOG_DEBUG("Request method=%d [%s] on hdr_buf=%p, hdr_loc=%p", + state_->method_, HTTP_METHOD_STRINGS[state_->method_].c_str(), state_->hdr_buf_, state_->hdr_loc_); } else { LOG_ERROR("TSHttpHdrMethodGet returned null string or it was zero length, hdr_buf=%p, hdr_loc=%p, method str=%p, method_len=%d", state_->hdr_buf_, state_->hdr_loc_, method_str, method_len); @@ -136,10 +138,10 @@ Url &Request::getUrl() { } atscppapi::HttpVersion Request::getVersion() const { - if (!state_->version_.isInitialized() && state_->hdr_buf_ && state_->hdr_loc_) { + if (state_->hdr_buf_ && state_->hdr_loc_) { state_->version_ = utils::internal::getHttpVersion(state_->hdr_buf_, state_->hdr_loc_); - LOG_DEBUG("Initializing request version=%d [%s] on hdr_buf=%p, hdr_loc=%p", - state_->version_.getValue(), HTTP_VERSION_STRINGS[state_->version_.getValue()].c_str(), state_->hdr_buf_, state_->hdr_loc_); + LOG_DEBUG("Request version=%d [%s] on hdr_buf=%p, hdr_loc=%p", + state_->version_, HTTP_VERSION_STRINGS[state_->version_].c_str(), state_->hdr_buf_, state_->hdr_loc_); } return state_->version_; } http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/Response.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/Response.cc b/lib/atscppapi/src/Response.cc index dd7bddf..2ec042c 100644 --- a/lib/atscppapi/src/Response.cc +++ b/lib/atscppapi/src/Response.cc @@ -19,7 +19,6 @@ * @file Response.cc */ #include "atscppapi/Response.h" -#include "InitializableValue.h" #include "atscppapi/noncopyable.h" #include "utils_internal.h" #include "logging_internal.h" @@ -35,11 +34,8 @@ namespace atscppapi { struct ResponseState: noncopyable { TSMBuffer hdr_buf_; TSMLoc hdr_loc_; - InitializableValue<HttpVersion> version_; - InitializableValue<HttpStatus> status_code_; - InitializableValue<string> reason_phrase_; Headers headers_; - ResponseState() : hdr_buf_(NULL), hdr_loc_(NULL), version_(HTTP_VERSION_UNKNOWN, false), status_code_(HTTP_STATUS_UNKNOWN, false) { } + ResponseState() : hdr_buf_(NULL), hdr_loc_(NULL) { } }; } @@ -57,61 +53,53 @@ void Response::init(void *hdr_buf, void *hdr_loc) { } HttpVersion Response::getVersion() const { - if (state_->version_.isInitialized()) { - return state_->version_; - } + HttpVersion ret_val = HTTP_VERSION_UNKNOWN; if (state_->hdr_buf_ && state_->hdr_loc_) { - state_->version_ = utils::internal::getHttpVersion(state_->hdr_buf_, state_->hdr_loc_); + ret_val = utils::internal::getHttpVersion(state_->hdr_buf_, state_->hdr_loc_); LOG_DEBUG("Initializing response version to %d [%s] with hdr_buf=%p and hdr_loc=%p", - state_->version_.getValue(), HTTP_VERSION_STRINGS[state_->version_.getValue()].c_str(), state_->hdr_buf_, state_->hdr_loc_); - return state_->version_; + ret_val, HTTP_VERSION_STRINGS[ret_val].c_str(), state_->hdr_buf_, state_->hdr_loc_); } - return HTTP_VERSION_UNKNOWN; + return ret_val; } HttpStatus Response::getStatusCode() const { - if (state_->status_code_.isInitialized()) { - return state_->status_code_; - } + HttpStatus ret_val = HTTP_STATUS_UNKNOWN; if (state_->hdr_buf_ && state_->hdr_loc_) { - state_->status_code_ = static_cast<HttpStatus>(TSHttpHdrStatusGet(state_->hdr_buf_, state_->hdr_loc_)); + ret_val = static_cast<HttpStatus>(TSHttpHdrStatusGet(state_->hdr_buf_, state_->hdr_loc_)); LOG_DEBUG("Initializing response status code to %d with hdr_buf=%p and hdr_loc=%p", - state_->status_code_.getValue(), state_->hdr_buf_, state_->hdr_loc_); - return state_->status_code_; + ret_val, state_->hdr_buf_, state_->hdr_loc_); } - - return HTTP_STATUS_UNKNOWN; + return ret_val; } void Response::setStatusCode(HttpStatus code) { if (state_->hdr_buf_ && state_->hdr_loc_) { TSHttpHdrStatusSet(state_->hdr_buf_, state_->hdr_loc_, static_cast<TSHttpStatus>(code)); - state_->status_code_ = code; LOG_DEBUG("Changing response status code to %d with hdr_buf=%p and hdr_loc=%p", - state_->status_code_.getValue(), state_->hdr_buf_, state_->hdr_loc_); + code, state_->hdr_buf_, state_->hdr_loc_); } } -const string &Response::getReasonPhrase() const { - if (!state_->reason_phrase_.isInitialized() && state_->hdr_buf_ && state_->hdr_loc_) { +string Response::getReasonPhrase() const { + string ret_str; + if (state_->hdr_buf_ && state_->hdr_loc_) { int length; const char *str = TSHttpHdrReasonGet(state_->hdr_buf_, state_->hdr_loc_, &length); if (str && length) { - state_->reason_phrase_.getValueRef().assign(str, length); + ret_str.assign(str, length); LOG_DEBUG("Initializing response reason phrase to '%s' with hdr_buf=%p and hdr_loc=%p", - state_->reason_phrase_.getValueRef().c_str(), state_->hdr_buf_, state_->hdr_loc_); + ret_str.c_str(), state_->hdr_buf_, state_->hdr_loc_); } else { LOG_ERROR("TSHttpHdrReasonGet returned null string or zero length. str=%p, length=%d, hdr_buf=%p, hdr_loc=%p", str, length, state_->hdr_buf_, state_->hdr_loc_); } } - return state_->reason_phrase_; // if not initialized, we will just return an empty string + return ret_str; // if not initialized, we will just return an empty string } void Response::setReasonPhrase(const string &phrase) { if (state_->hdr_buf_ && state_->hdr_loc_) { TSHttpHdrReasonSet(state_->hdr_buf_, state_->hdr_loc_, phrase.c_str(), phrase.length()); - state_->reason_phrase_ = phrase; LOG_DEBUG("Changing response reason phrase to '%s' with hdr_buf=%p and hdr_loc=%p", phrase.c_str(), state_->hdr_buf_, state_->hdr_loc_); } http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/Transaction.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/Transaction.cc b/lib/atscppapi/src/Transaction.cc index df3f852..f5bde35 100644 --- a/lib/atscppapi/src/Transaction.cc +++ b/lib/atscppapi/src/Transaction.cc @@ -29,7 +29,6 @@ #include "atscppapi/shared_ptr.h" #include "logging_internal.h" #include "utils_internal.h" -#include "InitializableValue.h" #include "atscppapi/noncopyable.h" using std::map; http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/Url.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/Url.cc b/lib/atscppapi/src/Url.cc index 2dce493..1b69f4c 100644 --- a/lib/atscppapi/src/Url.cc +++ b/lib/atscppapi/src/Url.cc @@ -22,7 +22,6 @@ #include "atscppapi/Url.h" #include <ts/ts.h> #include "atscppapi/noncopyable.h" -#include "InitializableValue.h" #include "logging_internal.h" using namespace atscppapi; @@ -34,12 +33,6 @@ using std::string; struct atscppapi::UrlState: noncopyable { TSMBuffer hdr_buf_; TSMLoc url_loc_; - InitializableValue<string> url_string_; - InitializableValue<string> path_; - InitializableValue<string> query_; - InitializableValue<string> host_; - InitializableValue<string> scheme_; - InitializableValue<uint16_t> port_; UrlState(TSMBuffer hdr_buf, TSMLoc url_loc) : hdr_buf_(hdr_buf), url_loc_(url_loc) { } @@ -67,94 +60,94 @@ bool inline Url::isInitialized() const { } void Url::reset() { - state_->url_string_.setInitialized(false); - state_->path_.setInitialized(false); - state_->query_.setInitialized(false); - state_->host_.setInitialized(false); - state_->scheme_.setInitialized(false); - state_->port_.setInitialized(false); + } -const std::string &Url::getUrlString() const { - if (isInitialized() && !state_->url_string_.isInitialized()) { +std::string Url::getUrlString() const { + std::string ret_str; + if (isInitialized()) { int length; char *memptr = TSUrlStringGet(state_->hdr_buf_, state_->url_loc_, &length); if (memptr && length) { - state_->url_string_ = std::string(memptr, length); + ret_str = std::string(memptr, length); TSfree(memptr); - LOG_DEBUG("Got URL [%s]", state_->url_string_.getValue().c_str()); + LOG_DEBUG("Got URL [%s]", ret_str.c_str()); } else { LOG_ERROR("Got null/zero-length URL string; hdr_buf %p, url_loc %p, ptr %p, length %d", state_->hdr_buf_, state_->url_loc_, memptr, length); } } - return state_->url_string_; + return ret_str; } -const std::string &Url::getPath() const { - if (isInitialized() && !state_->path_.isInitialized()) { +std::string Url::getPath() const { + std::string ret_str; + if (isInitialized()) { int length; const char *memptr = TSUrlPathGet(state_->hdr_buf_, state_->url_loc_, &length); if (memptr && length) { - state_->path_ = std::string(memptr, length); + ret_str = std::string(memptr, length); } - LOG_DEBUG("Using path [%s]", state_->path_.getValue().c_str()); + LOG_DEBUG("Using path [%s]", ret_str.c_str()); } - return state_->path_; + return ret_str; } -const std::string &Url::getQuery() const { - if (isInitialized() && !state_->query_.isInitialized()) { +std::string Url::getQuery() const { + std::string ret_str; + if (isInitialized()) { int length; const char *memptr = TSUrlHttpQueryGet(state_->hdr_buf_, state_->url_loc_, &length); if (memptr && length) { - state_->query_ = std::string(memptr, length); + ret_str = std::string(memptr, length); } - LOG_DEBUG("Using query [%s]", state_->query_.getValue().c_str()); + LOG_DEBUG("Using query [%s]", ret_str.c_str()); } - return state_->query_; + return ret_str; } -const std::string &Url::getScheme() const { - if (isInitialized() && !state_->scheme_.isInitialized()) { +std::string Url::getScheme() const { + std::string ret_str; + if (isInitialized()) { int length; const char *memptr = TSUrlSchemeGet(state_->hdr_buf_, state_->url_loc_, &length); if (memptr && length) { - state_->scheme_ = std::string(memptr, length); + ret_str = std::string(memptr, length); } - LOG_DEBUG("Using scheme [%s]", state_->scheme_.getValue().c_str()); + LOG_DEBUG("Using scheme [%s]", ret_str.c_str()); } - return state_->scheme_; + return ret_str; } -const std::string &Url::getHost() const { - if (isInitialized() && !state_->host_.isInitialized()) { +std::string Url::getHost() const { + std::string ret_str; + if (isInitialized()) { int length; const char *memptr = TSUrlHostGet(state_->hdr_buf_, state_->url_loc_, &length); if (memptr && length) { - state_->host_ = std::string(memptr, length); + ret_str = std::string(memptr, length); } - LOG_DEBUG("Using host [%s]", state_->host_.getValue().c_str()); + LOG_DEBUG("Using host [%s]", ret_str.c_str()); } - return state_->host_; + return ret_str; } uint16_t Url::getPort() const { - if (isInitialized() && !state_->port_.isInitialized()) { - state_->port_ = TSUrlPortGet(state_->hdr_buf_, state_->url_loc_); - LOG_DEBUG("Got port %d", state_->port_.getValue()); + uint16_t ret_val = 0; + if (isInitialized()) { + ret_val = static_cast<uint16_t>(TSUrlPortGet(state_->hdr_buf_, state_->url_loc_)); + LOG_DEBUG("Got port %d", ret_val); } - return state_->port_; + return ret_val; } void Url::setPath(const std::string &path) { if (!isInitialized()) { - LOG_ERROR("Not initialized"); + LOG_ERROR("Url %p not initialized", this); return; } - state_->url_string_.setInitialized(false); + if (TSUrlPathSet(state_->hdr_buf_, state_->url_loc_, path.c_str(), path.length()) == TS_SUCCESS) { - state_->path_ = path; LOG_DEBUG("Set path to [%s]", path.c_str()); } else { LOG_ERROR("Could not set path; hdr_buf %p, url_loc %p", state_->hdr_buf_, state_->url_loc_); @@ -163,12 +156,11 @@ void Url::setPath(const std::string &path) { void Url::setQuery(const std::string &query) { if (!isInitialized()) { - LOG_ERROR("Not initialized"); + LOG_ERROR("Url %p not initialized", this); return; } - state_->url_string_.setInitialized(false); + if (TSUrlHttpQuerySet(state_->hdr_buf_, state_->url_loc_, query.c_str(), query.length()) == TS_SUCCESS) { - state_->query_ = query; LOG_DEBUG("Set query to [%s]", query.c_str()); } else { LOG_ERROR("Could not set query; hdr_buf %p, url_loc %p", state_->hdr_buf_, state_->url_loc_); @@ -177,12 +169,11 @@ void Url::setQuery(const std::string &query) { void Url::setScheme(const std::string &scheme) { if (!isInitialized()) { - LOG_ERROR("Not initialized"); + LOG_ERROR("Url %p not initialized", this);; return; } - state_->url_string_.setInitialized(false); + if (TSUrlSchemeSet(state_->hdr_buf_, state_->url_loc_, scheme.c_str(), scheme.length()) == TS_SUCCESS) { - state_->scheme_ = scheme; LOG_DEBUG("Set scheme to [%s]", scheme.c_str()); } else { LOG_ERROR("Could not set scheme; hdr_buf %p, url_loc %p", state_->hdr_buf_, state_->url_loc_); @@ -191,12 +182,11 @@ void Url::setScheme(const std::string &scheme) { void Url::setHost(const std::string &host) { if (!isInitialized()) { - LOG_ERROR("Not initialized"); + LOG_ERROR("Url %p not initialized", this); return; } - state_->url_string_.setInitialized(false); + if (TSUrlHostSet(state_->hdr_buf_, state_->url_loc_, host.c_str(), host.length()) == TS_SUCCESS) { - state_->host_ = host; LOG_DEBUG("Set host to [%s]", host.c_str()); } else { LOG_ERROR("Could not set host; hdr_buf %p, url_loc %p", state_->hdr_buf_, state_->url_loc_); @@ -205,12 +195,11 @@ void Url::setHost(const std::string &host) { void Url::setPort(const uint16_t port) { if (!isInitialized()) { - LOG_ERROR("Not initialized"); + LOG_ERROR("Url %p not initialized", this); return; } - state_->url_string_.setInitialized(false); + if (TSUrlPortSet(state_->hdr_buf_, state_->url_loc_, port) == TS_SUCCESS) { - state_->port_ = port; LOG_DEBUG("Set port to %d", port); } else { LOG_ERROR("Could not set port; hdr_buf %p, url_loc %p", state_->hdr_buf_, state_->url_loc_); http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/include/atscppapi/Response.h ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/include/atscppapi/Response.h b/lib/atscppapi/src/include/atscppapi/Response.h index f309bc1..c6c68f8 100644 --- a/lib/atscppapi/src/include/atscppapi/Response.h +++ b/lib/atscppapi/src/include/atscppapi/Response.h @@ -50,7 +50,7 @@ public: void setStatusCode(HttpStatus); /** @return Reason phrase of the response */ - const std::string &getReasonPhrase() const; + std::string getReasonPhrase() const; /** @param New reason phrase to set */ void setReasonPhrase(const std::string &); http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/include/atscppapi/Url.h ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/include/atscppapi/Url.h b/lib/atscppapi/src/include/atscppapi/Url.h index 29d1ed5..1feadf8 100644 --- a/lib/atscppapi/src/include/atscppapi/Url.h +++ b/lib/atscppapi/src/include/atscppapi/Url.h @@ -70,27 +70,27 @@ public: /** * @return The full url as a string, such a url might be http://trafficserver.apache.org/search?q=blah */ - const std::string &getUrlString() const; + std::string getUrlString() const; /** * @return The path only portion of the url, such as /search */ - const std::string &getPath() const; + std::string getPath() const; /** * @return The query only portion of the url, which might be q=blah */ - const std::string &getQuery() const; + std::string getQuery() const; /** * @return The scheme of the url, this will be either http or https. */ - const std::string &getScheme() const; + std::string getScheme() const; /** * @return The host only of the url, this might be www.google.com */ - const std::string &getHost() const; + std::string getHost() const; /** * @return The port only portion of the url, this will likely be 80 or 443. http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/include/atscppapi/utils.h ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/include/atscppapi/utils.h b/lib/atscppapi/src/include/atscppapi/utils.h index c0d42bf..8c91c1d 100644 --- a/lib/atscppapi/src/include/atscppapi/utils.h +++ b/lib/atscppapi/src/include/atscppapi/utils.h @@ -66,12 +66,6 @@ uint16_t getPort(const sockaddr *); */ std::string getIpPortString(const sockaddr *); -/** - * @brief This is the environment variable that disables caching in all - * types including InitializableValue. - */ -extern const std::string DISABLE_DATA_CACHING_ENV_FLAG; - } } http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/utils.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/utils.cc b/lib/atscppapi/src/utils.cc index d547bb2..7608281 100644 --- a/lib/atscppapi/src/utils.cc +++ b/lib/atscppapi/src/utils.cc @@ -26,8 +26,6 @@ #include <ts/ts.h> #include "logging_internal.h" -const std::string atscppapi::utils::DISABLE_DATA_CACHING_ENV_FLAG("ATSCPPAPI_DISABLE_TRANSACTION_DATA_CACHING"); - std::string atscppapi::utils::getIpString(const sockaddr *sockaddress) { if (sockaddress == NULL) { LOG_ERROR("Cannot work on NULL sockaddress"); http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5622e8d4/lib/atscppapi/src/utils_internal.cc ---------------------------------------------------------------------- diff --git a/lib/atscppapi/src/utils_internal.cc b/lib/atscppapi/src/utils_internal.cc index 01920d2..a63b59f 100644 --- a/lib/atscppapi/src/utils_internal.cc +++ b/lib/atscppapi/src/utils_internal.cc @@ -31,7 +31,6 @@ #include "atscppapi/Transaction.h" #include "atscppapi/TransactionPlugin.h" #include "atscppapi/TransformationPlugin.h" -#include "InitializableValue.h" #include "atscppapi/utils.h" #include "logging_internal.h" @@ -96,12 +95,6 @@ void setupTransactionManagement() { TSHttpHookAdd(TS_HTTP_READ_RESPONSE_HDR_HOOK, cont); TSHttpHookAdd(TS_HTTP_SEND_RESPONSE_HDR_HOOK, cont); TSHttpHookAdd(TS_HTTP_TXN_CLOSE_HOOK, cont); -#ifndef DISABLE_TRANSACTION_DATA_CACHING - transaction_data_caching_enabled = (getenv(utils::DISABLE_DATA_CACHING_ENV_FLAG.c_str()) == NULL); -#endif - LOG_DEBUG("Initialized transaction management with data caching %s", - (transaction_data_caching_enabled ? "enabled" : "disabled")); - // TODO is existence of env variable enough or should we expect a specific value? } void inline invokePluginForEvent(Plugin *plugin, TSHttpTxn ats_txn_handle, TSEvent event) {