diff --git a/api/include/opentelemetry/metrics/multi_observer_result.h b/api/include/opentelemetry/metrics/multi_observer_result.h index 7e3bd5494e..d120b786f8 100644 --- a/api/include/opentelemetry/metrics/multi_observer_result.h +++ b/api/include/opentelemetry/metrics/multi_observer_result.h @@ -35,25 +35,25 @@ class MultiObserverResult * @return An ObserverResultT for the given instrument. */ template - ObserverResultT &ForInstrument(const ObservableInstrument *instrument) = delete; + ObserverResultT &ForInstrument(ObservableInstrument *instrument) = delete; protected: // You can't have a virtual template, and you can't overload on return type, so we need to // enumerate the options for the observer result type as separate methods to override. - virtual ObserverResultT &ForInstrumentDouble(const ObservableInstrument *instrument) = 0; - virtual ObserverResultT &ForInstrumentInt64(const ObservableInstrument *instrument) = 0; + virtual ObserverResultT &ForInstrumentDouble(ObservableInstrument *instrument) = 0; + virtual ObserverResultT &ForInstrumentInt64(ObservableInstrument *instrument) = 0; }; template <> inline ObserverResultT &MultiObserverResult::ForInstrument( - const ObservableInstrument *instrument) + ObservableInstrument *instrument) { return ForInstrumentDouble(instrument); } template <> inline ObserverResultT &MultiObserverResult::ForInstrument( - const ObservableInstrument *instrument) + ObservableInstrument *instrument) { return ForInstrumentInt64(instrument); } diff --git a/examples/http/server.cc b/examples/http/server.cc index 267dd20343..3148b51c01 100644 --- a/examples/http/server.cc +++ b/examples/http/server.cc @@ -51,9 +51,7 @@ class RequestHandler : public HTTP_SERVER_NS::HttpRequestCallback std::string span_name = request.uri; // extract context from http header - std::map &request_headers = - const_cast &>(request.headers); - const HttpTextMapCarrier> carrier(request_headers); + const HttpTextMapCarrier> carrier(request.headers); auto prop = context::propagation::GlobalTextMapPropagator::GetGlobalPropagator(); auto current_ctx = context::RuntimeContext::GetCurrent(); auto new_context = prop->Extract(carrier, current_ctx); diff --git a/examples/http/tracer_common.h b/examples/http/tracer_common.h index 5aed4ff14e..7a451eb3ff 100644 --- a/examples/http/tracer_common.h +++ b/examples/http/tracer_common.h @@ -29,7 +29,7 @@ template class HttpTextMapCarrier : public opentelemetry::context::propagation::TextMapCarrier { public: - HttpTextMapCarrier(T &headers) : headers_(headers) {} + HttpTextMapCarrier(const T &headers) : headers_(headers) {} HttpTextMapCarrier() = default; opentelemetry::nostd::string_view Get( opentelemetry::nostd::string_view key) const noexcept override diff --git a/ext/include/opentelemetry/ext/http/client/curl/http_operation_curl.h b/ext/include/opentelemetry/ext/http/client/curl/http_operation_curl.h index c57309ccd6..5328847767 100644 --- a/ext/include/opentelemetry/ext/http/client/curl/http_operation_curl.h +++ b/ext/include/opentelemetry/ext/http/client/curl/http_operation_curl.h @@ -290,12 +290,11 @@ class HttpOperation inline CURL *GetCurlEasyHandle() noexcept { return curl_resource_.easy_handle; } private: - CURLcode SetCurlPtrOption(CURLoption option, void *value); + CURLcode SetCurlPtrOption(CURLoption option, const void *value); CURLcode SetCurlStrOption(CURLoption option, const char *str) { - void *ptr = const_cast(str); - return SetCurlPtrOption(option, ptr); + return SetCurlPtrOption(option, str); } CURLcode SetCurlBlobOption(CURLoption option, struct curl_blob *blob) diff --git a/ext/src/http/client/curl/http_operation_curl.cc b/ext/src/http/client/curl/http_operation_curl.cc index 0f1bda4035..e78cf7daa2 100644 --- a/ext/src/http/client/curl/http_operation_curl.cc +++ b/ext/src/http/client/curl/http_operation_curl.cc @@ -721,7 +721,7 @@ const char *HttpOperation::GetCurlErrorMessage(CURLcode code) return message; } -CURLcode HttpOperation::SetCurlPtrOption(CURLoption option, void *value) +CURLcode HttpOperation::SetCurlPtrOption(CURLoption option, const void *value) { /* curl_easy_setopt() is a macro with variadic arguments, type unsafe. @@ -907,13 +907,13 @@ CURLcode HttpOperation::Setup() else if (!ssl_options_.ssl_ca_cert_string.empty()) { #if LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(7, 77, 0) - const char *data = ssl_options_.ssl_ca_cert_string.c_str(); - size_t data_len = ssl_options_.ssl_ca_cert_string.length(); + std::vector blob_data(ssl_options_.ssl_ca_cert_string.begin(), + ssl_options_.ssl_ca_cert_string.end()); struct curl_blob stblob {}; - stblob.data = const_cast(data); - stblob.len = data_len; + stblob.data = blob_data.data(); + stblob.len = blob_data.size(); stblob.flags = CURL_BLOB_COPY; rc = SetCurlBlobOption(CURLOPT_CAINFO_BLOB, &stblob); @@ -949,13 +949,13 @@ CURLcode HttpOperation::Setup() else if (!ssl_options_.ssl_client_key_string.empty()) { #if LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(7, 71, 0) - const char *data = ssl_options_.ssl_client_key_string.c_str(); - size_t data_len = ssl_options_.ssl_client_key_string.length(); + std::vector blob_data(ssl_options_.ssl_client_key_string.begin(), + ssl_options_.ssl_client_key_string.end()); struct curl_blob stblob {}; - stblob.data = const_cast(data); - stblob.len = data_len; + stblob.data = blob_data.data(); + stblob.len = blob_data.size(); stblob.flags = CURL_BLOB_COPY; rc = SetCurlBlobOption(CURLOPT_SSLKEY_BLOB, &stblob); @@ -997,13 +997,13 @@ CURLcode HttpOperation::Setup() else if (!ssl_options_.ssl_client_cert_string.empty()) { #if LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(7, 71, 0) - const char *data = ssl_options_.ssl_client_cert_string.c_str(); - size_t data_len = ssl_options_.ssl_client_cert_string.length(); + std::vector blob_data(ssl_options_.ssl_client_cert_string.begin(), + ssl_options_.ssl_client_cert_string.end()); struct curl_blob stblob {}; - stblob.data = const_cast(data); - stblob.len = data_len; + stblob.data = blob_data.data(); + stblob.len = blob_data.size(); stblob.flags = CURL_BLOB_COPY; rc = SetCurlBlobOption(CURLOPT_SSLCERT_BLOB, &stblob); diff --git a/ext/test/w3c_tracecontext_http_test_server/main.cc b/ext/test/w3c_tracecontext_http_test_server/main.cc index 51a55a2077..f1eb0e728c 100644 --- a/ext/test/w3c_tracecontext_http_test_server/main.cc +++ b/ext/test/w3c_tracecontext_http_test_server/main.cc @@ -203,7 +203,7 @@ int main(int argc, char *argv[]) for (auto &part : body) { - auto headers_2 = const_cast &>(req.headers); + auto headers_2 = req.headers; const TextMapCarrierTest carrier(headers_2); auto current_ctx = context::RuntimeContext::GetCurrent(); diff --git a/sdk/include/opentelemetry/sdk/common/circular_buffer.h b/sdk/include/opentelemetry/sdk/common/circular_buffer.h index 94ebb1f8ca..cf85745abd 100644 --- a/sdk/include/opentelemetry/sdk/common/circular_buffer.h +++ b/sdk/include/opentelemetry/sdk/common/circular_buffer.h @@ -38,10 +38,7 @@ class CircularBuffer * * Note: This method must only be called from the consumer thread. */ - CircularBufferRange> Peek() const noexcept - { - return const_cast(this)->PeekImpl(); - } + CircularBufferRange> Peek() const noexcept { return PeekImpl(); } /** * Consume elements from the circular buffer's tail. @@ -172,7 +169,7 @@ class CircularBuffer std::atomic head_{0}; std::atomic tail_{0}; - CircularBufferRange> PeekImpl() noexcept + CircularBufferRange> PeekImpl() const noexcept { uint64_t tail_index = tail_ % capacity_; uint64_t head_index = head_ % capacity_; diff --git a/sdk/include/opentelemetry/sdk/metrics/multi_observer_result.h b/sdk/include/opentelemetry/sdk/metrics/multi_observer_result.h index b0304c2c43..2c1da9cdff 100644 --- a/sdk/include/opentelemetry/sdk/metrics/multi_observer_result.h +++ b/sdk/include/opentelemetry/sdk/metrics/multi_observer_result.h @@ -25,7 +25,7 @@ class OPENTELEMETRY_EXPORT MultiObserverResult final void RegisterInstrument(opentelemetry::metrics::ObservableInstrument *instrument); void DeregisterInstrument(opentelemetry::metrics::ObservableInstrument *instrument); size_t InstrumentCount() const; - bool HasInstrument(const opentelemetry::metrics::ObservableInstrument *instrument) const; + bool HasInstrument(opentelemetry::metrics::ObservableInstrument *instrument) const; void GetInstruments( nostd::function_ref callback); void Reset(); @@ -33,9 +33,9 @@ class OPENTELEMETRY_EXPORT MultiObserverResult final protected: opentelemetry::metrics::ObserverResultT &ForInstrumentDouble( - const opentelemetry::metrics::ObservableInstrument *instrument) override; + opentelemetry::metrics::ObservableInstrument *instrument) override; opentelemetry::metrics::ObserverResultT &ForInstrumentInt64( - const opentelemetry::metrics::ObservableInstrument *instrument) override; + opentelemetry::metrics::ObservableInstrument *instrument) override; private: // This is _different_ to opentelemetry::metrics::ObserverResult because this variant is diff --git a/sdk/src/metrics/multi_observer_result.cc b/sdk/src/metrics/multi_observer_result.cc index c7ddbc255d..cddb1e4f1b 100644 --- a/sdk/src/metrics/multi_observer_result.cc +++ b/sdk/src/metrics/multi_observer_result.cc @@ -63,10 +63,9 @@ size_t MultiObserverResult::InstrumentCount() const } bool MultiObserverResult::HasInstrument( - const opentelemetry::metrics::ObservableInstrument *instrument) const + opentelemetry::metrics::ObservableInstrument *instrument) const { - return observer_results_.find(const_cast( - instrument)) != observer_results_.end(); + return observer_results_.find(instrument) != observer_results_.end(); } void MultiObserverResult::GetInstruments( @@ -100,13 +99,10 @@ void MultiObserverResult::StoreResults(opentelemetry::common::SystemTimestamp co } opentelemetry::metrics::ObserverResultT &MultiObserverResult::ForInstrumentDouble( - const opentelemetry::metrics::ObservableInstrument *instrument) + opentelemetry::metrics::ObservableInstrument *instrument) { static opentelemetry::sdk::metrics::ObserverResultT null_result; - // const_cast is appropriate here, because we're _not_ modifying the passed-in pointer; - // we just need to make it non-const to be able to look it up in our map. - auto it = observer_results_.find( - const_cast(instrument)); + auto it = observer_results_.find(instrument); if (it == observer_results_.end()) { OTEL_INTERNAL_LOG_ERROR("[MultiObserverResult::ForInstrumentDouble]" @@ -125,11 +121,10 @@ opentelemetry::metrics::ObserverResultT &MultiObserverResult::ForInstrum } opentelemetry::metrics::ObserverResultT &MultiObserverResult::ForInstrumentInt64( - const opentelemetry::metrics::ObservableInstrument *instrument) + opentelemetry::metrics::ObservableInstrument *instrument) { static opentelemetry::sdk::metrics::ObserverResultT null_result; - auto it = observer_results_.find( - const_cast(instrument)); + auto it = observer_results_.find(instrument); if (it == observer_results_.end()) { OTEL_INTERNAL_LOG_ERROR("[MultiObserverResult::ForInstrumentInt64]"