NVIDIA DeepStream SDK API Reference

9.2 Release
includes/opentelemetry/ext/http/client/http_client.h
Go to the documentation of this file.
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3 
4 #pragma once
5 
6 #include <chrono>
7 #include <cstring>
8 #include <map>
9 #include <memory>
10 #include <string>
11 #include <vector>
12 
13 #include "opentelemetry/nostd/function_ref.h"
14 #include "opentelemetry/nostd/string_view.h"
15 #include "opentelemetry/version.h"
16 
17 /*
18  Usage Example
19 
20 Sync Request:
21 
22  HttpClient httpClient;
23  auto result = httpClient.Get(url); // GET request
24  if (result){
25  auto response = result.GetResponse();
26  } else {
27  std::cout << result.GetSessionState();
28  }
29 
30 Async Request:
31 
32  struct SimpleReponseHandler: public ResponseHandler {
33  void OnResponse(Response& res) noexcept override
34  {
35  if (res.IsSuccess()) {
36  res.GetNextHeader([](nostd::string_view name, std::string value) -> bool {
37  std::cout << "Header Name:" << name << " Header Value:"<< value ;
38  return true;
39  });
40  .. process response body
41  }
42  }
43 
44  void OnError(nostd::string_view err) noexcept override
45  {
46  std::cerr << " Error:" << err;
47  }
48  };
49 
50  HttpClient httpClient; // implementer can provide singleton implementation for it
51  auto session = httpClient.createSession("localhost" + 8000);
52  auto request = session->CreateRequest();
53  request->AddHeader(..);
54  SimpleResponseHandler res_handler;
55  session->SendRequest(res_handler);
56  session->FinishSession() // optionally in the end
57  ...shutdown
58  httpClient.FinishAllSessions()
59 
60 */
61 
63 namespace ext
64 {
65 namespace http
66 {
67 namespace client
68 {
69 
70 enum class Method
71 {
72  Get,
73  Post,
74  Put,
75  Options,
76  Head,
77  Patch,
78  Delete
79 };
80 
81 enum class SessionState
82 {
83  CreateFailed, // session create failed
84  Created, // session created
85  Destroyed, // session destroyed
86  Connecting, // connecting to peer
87  ConnectFailed, // connection failed
88  Connected, // connected
89  Sending, // sending request
90  SendFailed, // request send failed
91  Response, // response received
92  SSLHandshakeFailed, // SSL handshake failed
93  TimedOut, // request time out
94  NetworkError, // network error
95  ReadError, // error reading response
96  WriteError, // error writing request
97  Cancelled // (manually) cancelled
98 };
99 
100 enum class Compression
101 {
102  kNone,
103  kGzip
104 };
105 
106 using Byte = uint8_t;
107 using StatusCode = uint16_t;
108 using Body = std::vector<Byte>;
109 
110 struct cmp_ic
111 {
112  bool operator()(const std::string &s1, const std::string &s2) const
113  {
114  return std::lexicographical_compare(
115  s1.begin(), s1.end(), s2.begin(), s2.end(),
116  [](char c1, char c2) { return ::tolower(c1) < ::tolower(c2); });
117  }
118 };
119 using Headers = std::multimap<std::string, std::string, cmp_ic>;
120 
122 {
124 
126  bool input_ssl_insecure_skip_verify,
127  nostd::string_view input_ssl_ca_cert_path,
128  nostd::string_view input_ssl_ca_cert_string,
129  nostd::string_view input_ssl_client_key_path,
130  nostd::string_view input_ssl_client_key_string,
131  nostd::string_view input_ssl_client_cert_path,
132  nostd::string_view input_ssl_client_cert_string,
133  nostd::string_view input_ssl_min_tls,
134  nostd::string_view input_ssl_max_tls,
135  nostd::string_view input_ssl_cipher,
136  nostd::string_view input_ssl_cipher_suite)
137  : use_ssl(false),
138  ssl_insecure_skip_verify(input_ssl_insecure_skip_verify),
139  ssl_ca_cert_path(input_ssl_ca_cert_path),
140  ssl_ca_cert_string(input_ssl_ca_cert_string),
141  ssl_client_key_path(input_ssl_client_key_path),
142  ssl_client_key_string(input_ssl_client_key_string),
143  ssl_client_cert_path(input_ssl_client_cert_path),
144  ssl_client_cert_string(input_ssl_client_cert_string),
145  ssl_min_tls(input_ssl_min_tls),
146  ssl_max_tls(input_ssl_max_tls),
147  ssl_cipher(input_ssl_cipher),
148  ssl_cipher_suite(input_ssl_cipher_suite)
149  {
150  /* Use SSL if url starts with "https:" */
151  if (strncmp(url.data(), "https:", 6) == 0)
152  {
153  use_ssl = true;
154  }
155  }
156 
160  bool use_ssl{false};
169  std::string ssl_ca_cert_path{};
174  std::string ssl_ca_cert_string{};
178  std::string ssl_client_key_path{};
183  std::string ssl_client_key_string{};
187  std::string ssl_client_cert_path{};
192  std::string ssl_client_cert_string{};
193 
201  std::string ssl_min_tls{};
202 
210  std::string ssl_max_tls{};
211 
218  std::string ssl_cipher{};
219 
226  std::string ssl_cipher_suite{};
227 };
228 
229 using SecondsDecimal = std::chrono::duration<float, std::ratio<1>>;
230 
232 {
233  RetryPolicy() = default;
234 
235  RetryPolicy(std::uint32_t input_max_attempts,
236  SecondsDecimal input_initial_backoff,
237  SecondsDecimal input_max_backoff,
238  float input_backoff_multiplier)
239  : max_attempts(input_max_attempts),
240  initial_backoff(input_initial_backoff),
241  max_backoff(input_max_backoff),
242  backoff_multiplier(input_backoff_multiplier)
243  {}
244 
245  std::uint32_t max_attempts{};
249 };
250 
251 class Request
252 {
253 public:
254  virtual void SetMethod(Method method) noexcept = 0;
255 
256  virtual void SetUri(nostd::string_view uri) noexcept = 0;
257 
258  virtual void SetSslOptions(const HttpSslOptions &options) noexcept = 0;
259 
260  virtual void SetBody(Body &body) noexcept = 0;
261 
262  virtual void AddHeader(nostd::string_view name, nostd::string_view value) noexcept = 0;
263 
264  virtual void ReplaceHeader(nostd::string_view name, nostd::string_view value) noexcept = 0;
265 
266  virtual void SetTimeoutMs(std::chrono::milliseconds timeout_ms) noexcept = 0;
267 
268  virtual void SetCompression(const Compression &compression) noexcept = 0;
269 
270  virtual void EnableLogging(bool is_log_enabled) noexcept = 0;
271 
272  virtual void SetRetryPolicy(const RetryPolicy &retry_policy) noexcept = 0;
273 
274  virtual ~Request() = default;
275 };
276 
277 class Response
278 {
279 public:
280  virtual const Body &GetBody() const noexcept = 0;
281 
282  virtual bool ForEachHeader(
283  nostd::function_ref<bool(nostd::string_view name, nostd::string_view value)> callable)
284  const noexcept = 0;
285 
286  virtual bool ForEachHeader(
287  const nostd::string_view &key,
288  nostd::function_ref<bool(nostd::string_view name, nostd::string_view value)> callable)
289  const noexcept = 0;
290 
291  virtual StatusCode GetStatusCode() const noexcept = 0;
292 
293  virtual ~Response() = default;
294 };
295 
296 class NoopResponse : public Response
297 {
298 public:
299  const Body &GetBody() const noexcept override
300  {
301  static Body body;
302  return body;
303  }
305  /* callable */) const noexcept override
306  {
307  return true;
308  }
309 
310  bool ForEachHeader(const nostd::string_view & /* key */,
312  /* callable */) const noexcept override
313  {
314  return true;
315  }
316 
317  StatusCode GetStatusCode() const noexcept override { return 0; }
318 };
319 
320 class Result
321 {
322 
323 public:
324  Result(std::unique_ptr<Response> res, SessionState session_state)
325  : response_(std::move(res)), session_state_(session_state)
326  {}
327  operator bool() const { return session_state_ == SessionState::Response; }
329  {
330  if (response_ == nullptr)
331  {
332  // let's not return nullptr
333  response_.reset(new NoopResponse());
334  }
335  return *response_;
336  }
337  SessionState GetSessionState() { return session_state_; }
338 
339 private:
340  std::unique_ptr<Response> response_;
341  SessionState session_state_;
342 };
343 
345 {
346 public:
347  virtual void OnResponse(Response &) noexcept = 0;
348 
349  virtual void OnEvent(SessionState, nostd::string_view) noexcept = 0;
350 
351  virtual ~EventHandler() = default;
352 };
353 
354 class Session
355 {
356 public:
357  virtual std::shared_ptr<Request> CreateRequest() noexcept = 0;
358 
359  virtual void SendRequest(std::shared_ptr<EventHandler>) noexcept = 0;
360 
361  virtual bool IsSessionActive() noexcept = 0;
362 
363  virtual bool CancelSession() noexcept = 0;
364 
365  virtual bool FinishSession() noexcept = 0;
366 
367  virtual ~Session() = default;
368 };
369 
371 {
372 public:
373  virtual std::shared_ptr<Session> CreateSession(nostd::string_view url) noexcept = 0;
374 
375  virtual bool CancelAllSessions() noexcept = 0;
376 
377  virtual bool FinishAllSessions() noexcept = 0;
378 
379  virtual void SetMaxSessionsPerConnection(std::size_t max_requests_per_connection) noexcept = 0;
380 
381  virtual ~HttpClient() = default;
382 };
383 
385 {
386 public:
388  const Headers &headers = {{}},
389  const Compression &compression = Compression::kNone) noexcept
390  {
391  static const HttpSslOptions no_ssl;
392  return Get(url, no_ssl, headers, compression);
393  }
394 
395  virtual Result PostNoSsl(const nostd::string_view &url,
396  const Body &body,
397  const Headers &headers = {{"content-type", "application/json"}},
398  const Compression &compression = Compression::kNone) noexcept
399  {
400  static const HttpSslOptions no_ssl;
401  return Post(url, no_ssl, body, headers, compression);
402  }
403 
404  virtual Result Get(const nostd::string_view &url,
405  const HttpSslOptions &ssl_options,
406  const Headers & = {{}},
407  const Compression &compression = Compression::kNone) noexcept = 0;
408 
409  virtual Result Post(const nostd::string_view &url,
410  const HttpSslOptions &ssl_options,
411  const Body &body,
412  const Headers & = {{"content-type", "application/json"}},
413  const Compression &compression = Compression::kNone) noexcept = 0;
414 
415  virtual ~HttpClientSync() = default;
416 };
417 
418 } // namespace client
419 } // namespace http
420 } // namespace ext
ext::http::client::Request::SetTimeoutMs
virtual void SetTimeoutMs(std::chrono::milliseconds timeout_ms) noexcept=0
ext::http::client::RetryPolicy::initial_backoff
SecondsDecimal initial_backoff
Definition: includes/opentelemetry/ext/http/client/http_client.h:246
ext
Definition: includes/opentelemetry/ext/http/client/http_client.h:63
ext::http::client::SessionState::CreateFailed
@ CreateFailed
nostd::function_ref
Definition: includes/opentelemetry/nostd/function_ref.h:17
ext::http::client::SessionState::ReadError
@ ReadError
ext::http::client::SecondsDecimal
std::chrono::duration< float, std::ratio< 1 > > SecondsDecimal
Definition: includes/opentelemetry/ext/http/client/http_client.h:229
ext::http::client::SessionState::Destroyed
@ Destroyed
ext::http::client::SessionState
SessionState
Definition: includes/opentelemetry/ext/http/client/http_client.h:81
ext::http::client::Session::FinishSession
virtual bool FinishSession() noexcept=0
ext::http::client::HttpClient::~HttpClient
virtual ~HttpClient()=default
ext::http::client::Method::Delete
@ Delete
ext::http::client::Request::SetMethod
virtual void SetMethod(Method method) noexcept=0
ext::http::client::Request::SetRetryPolicy
virtual void SetRetryPolicy(const RetryPolicy &retry_policy) noexcept=0
ext::http::client::HttpSslOptions
Definition: includes/opentelemetry/ext/http/client/http_client.h:121
ext::http::client::HttpSslOptions::ssl_cipher_suite
std::string ssl_cipher_suite
TLS Cipher suite.
Definition: includes/opentelemetry/ext/http/client/http_client.h:226
ext::http::client::HttpSslOptions::ssl_client_cert_string
std::string ssl_client_cert_string
Client cert.
Definition: includes/opentelemetry/ext/http/client/http_client.h:192
ext::http::client::Session::SendRequest
virtual void SendRequest(std::shared_ptr< EventHandler >) noexcept=0
ext::http::client::Response::~Response
virtual ~Response()=default
ext::http::client::HttpSslOptions::HttpSslOptions
HttpSslOptions()
Definition: includes/opentelemetry/ext/http/client/http_client.h:123
ext::http::client::HttpClientSync::~HttpClientSync
virtual ~HttpClientSync()=default
ext::http::client::SessionState::TimedOut
@ TimedOut
ext::http::client::HttpClient::SetMaxSessionsPerConnection
virtual void SetMaxSessionsPerConnection(std::size_t max_requests_per_connection) noexcept=0
ext::http::client::NoopResponse::ForEachHeader
bool ForEachHeader(nostd::function_ref< bool(nostd::string_view name, nostd::string_view value)>) const noexcept override
Definition: includes/opentelemetry/ext/http/client/http_client.h:304
ext::http::client::HttpClientSync::Get
virtual Result Get(const nostd::string_view &url, const HttpSslOptions &ssl_options, const Headers &={{}}, const Compression &compression=Compression::kNone) noexcept=0
ext::http::client::Request::ReplaceHeader
virtual void ReplaceHeader(nostd::string_view name, nostd::string_view value) noexcept=0
ext::http::client::NoopResponse::GetBody
const Body & GetBody() const noexcept override
Definition: includes/opentelemetry/ext/http/client/http_client.h:299
ext::http::client::Result::GetSessionState
SessionState GetSessionState()
Definition: includes/opentelemetry/ext/http/client/http_client.h:337
ext::http::client::NoopResponse::ForEachHeader
bool ForEachHeader(const nostd::string_view &, nostd::function_ref< bool(nostd::string_view name, nostd::string_view value)>) const noexcept override
Definition: includes/opentelemetry/ext/http/client/http_client.h:310
ext::http::client::Method::Post
@ Post
ext::http::client::HttpClient::FinishAllSessions
virtual bool FinishAllSessions() noexcept=0
ext::http::client::EventHandler::OnEvent
virtual void OnEvent(SessionState, nostd::string_view) noexcept=0
ext::http::client::Request
Definition: includes/opentelemetry/ext/http/client/http_client.h:251
ext::http::client::Result
Definition: includes/opentelemetry/ext/http/client/http_client.h:320
OPENTELEMETRY_BEGIN_NAMESPACE
#define OPENTELEMETRY_BEGIN_NAMESPACE
Definition: includes/opentelemetry/version.h:21
ext::http::client::HttpSslOptions::ssl_cipher
std::string ssl_cipher
TLS Cipher.
Definition: includes/opentelemetry/ext/http/client/http_client.h:218
ext::http::client::HttpClient::CancelAllSessions
virtual bool CancelAllSessions() noexcept=0
ext::http::client::HttpClientSync
Definition: includes/opentelemetry/ext/http/client/http_client.h:384
ext::http::client::Compression::kNone
@ kNone
ext::http::client::NoopResponse::GetStatusCode
StatusCode GetStatusCode() const noexcept override
Definition: includes/opentelemetry/ext/http/client/http_client.h:317
ext::http::client::HttpSslOptions::ssl_min_tls
std::string ssl_min_tls
Minimum SSL version to use.
Definition: includes/opentelemetry/ext/http/client/http_client.h:201
ext::http::client::NoopResponse
Definition: includes/opentelemetry/ext/http/client/http_client.h:296
ext::http::client::HttpSslOptions::ssl_ca_cert_string
std::string ssl_ca_cert_string
CA CERT.
Definition: includes/opentelemetry/ext/http/client/http_client.h:174
ext::http::client::RetryPolicy
Definition: includes/opentelemetry/ext/http/client/http_client.h:231
ext::http::client::Response::GetStatusCode
virtual StatusCode GetStatusCode() const noexcept=0
ext::http::client::SessionState::Response
@ Response
ext::http::client::Method::Head
@ Head
ext::http::client::Request::EnableLogging
virtual void EnableLogging(bool is_log_enabled) noexcept=0
ext::http::client::Method::Put
@ Put
ext::http::client::SessionState::ConnectFailed
@ ConnectFailed
ext::http::client::EventHandler::OnResponse
virtual void OnResponse(Response &) noexcept=0
ext::http::client::HttpSslOptions::HttpSslOptions
HttpSslOptions(nostd::string_view url, bool input_ssl_insecure_skip_verify, nostd::string_view input_ssl_ca_cert_path, nostd::string_view input_ssl_ca_cert_string, nostd::string_view input_ssl_client_key_path, nostd::string_view input_ssl_client_key_string, nostd::string_view input_ssl_client_cert_path, nostd::string_view input_ssl_client_cert_string, nostd::string_view input_ssl_min_tls, nostd::string_view input_ssl_max_tls, nostd::string_view input_ssl_cipher, nostd::string_view input_ssl_cipher_suite)
Definition: includes/opentelemetry/ext/http/client/http_client.h:125
ext::http::client::Response
Definition: includes/opentelemetry/ext/http/client/http_client.h:277
ext::http::client::HttpSslOptions::ssl_max_tls
std::string ssl_max_tls
Maximum SSL version to use.
Definition: includes/opentelemetry/ext/http/client/http_client.h:210
OPENTELEMETRY_END_NAMESPACE
#define OPENTELEMETRY_END_NAMESPACE
Definition: includes/opentelemetry/version.h:24
ext::http::client::HttpClientSync::Post
virtual Result Post(const nostd::string_view &url, const HttpSslOptions &ssl_options, const Body &body, const Headers &={{"content-type", "application/json"}}, const Compression &compression=Compression::kNone) noexcept=0
ext::http::client::RetryPolicy::backoff_multiplier
float backoff_multiplier
Definition: includes/opentelemetry/ext/http/client/http_client.h:248
ext::http::client::Request::SetSslOptions
virtual void SetSslOptions(const HttpSslOptions &options) noexcept=0
absl::move
constexpr absl::OTABSL_OPTION_NAMESPACE_NAME::remove_reference_t< T > && move(T &&t) noexcept
Definition: includes/opentelemetry/nostd/internal/absl/utility/utility.h:199
ext::http::client::SessionState::SendFailed
@ SendFailed
ext::http::client::Request::SetCompression
virtual void SetCompression(const Compression &compression) noexcept=0
ext::http::client::Result::GetResponse
Response & GetResponse()
Definition: includes/opentelemetry/ext/http/client/http_client.h:328
ext::http::client::Session::IsSessionActive
virtual bool IsSessionActive() noexcept=0
ext::http::client::Response::ForEachHeader
virtual bool ForEachHeader(nostd::function_ref< bool(nostd::string_view name, nostd::string_view value)> callable) const noexcept=0
ext::http::client::Session::CancelSession
virtual bool CancelSession() noexcept=0
ext::http::client::HttpClientSync::PostNoSsl
virtual Result PostNoSsl(const nostd::string_view &url, const Body &body, const Headers &headers={{"content-type", "application/json"}}, const Compression &compression=Compression::kNone) noexcept
Definition: includes/opentelemetry/ext/http/client/http_client.h:395
ext::http::client::cmp_ic::operator()
bool operator()(const std::string &s1, const std::string &s2) const
Definition: includes/opentelemetry/ext/http/client/http_client.h:112
ext::http::client::RetryPolicy::max_backoff
SecondsDecimal max_backoff
Definition: includes/opentelemetry/ext/http/client/http_client.h:247
ext::http::client::HttpSslOptions::ssl_client_key_string
std::string ssl_client_key_string
Client key.
Definition: includes/opentelemetry/ext/http/client/http_client.h:183
ext::http::client::HttpSslOptions::ssl_client_cert_path
std::string ssl_client_cert_path
Path to the client cert file.
Definition: includes/opentelemetry/ext/http/client/http_client.h:187
ext::http::client::SessionState::Created
@ Created
ext::http::client::SessionState::NetworkError
@ NetworkError
ext::http::client::Session
Definition: includes/opentelemetry/ext/http/client/http_client.h:354
ext::http::client::RetryPolicy::RetryPolicy
RetryPolicy()=default
ext::http::client::Headers
std::multimap< std::string, std::string, cmp_ic > Headers
Definition: includes/opentelemetry/ext/http/client/http_client.h:119
ext::http::client::Method
Method
Definition: includes/opentelemetry/ext/http/client/http_client.h:70
ext::http::client::Session::CreateRequest
virtual std::shared_ptr< Request > CreateRequest() noexcept=0
ext::http::client::Compression
Compression
Definition: includes/opentelemetry/ext/http/client/http_client.h:100
ext::http::client::Compression::kGzip
@ kGzip
ext::http::client::SessionState::WriteError
@ WriteError
ext::http::client::RetryPolicy::RetryPolicy
RetryPolicy(std::uint32_t input_max_attempts, SecondsDecimal input_initial_backoff, SecondsDecimal input_max_backoff, float input_backoff_multiplier)
Definition: includes/opentelemetry/ext/http/client/http_client.h:235
ext::http::client::HttpClient
Definition: includes/opentelemetry/ext/http/client/http_client.h:370
ext::http::client::HttpClientSync::GetNoSsl
Result GetNoSsl(const nostd::string_view &url, const Headers &headers={{}}, const Compression &compression=Compression::kNone) noexcept
Definition: includes/opentelemetry/ext/http/client/http_client.h:387
ext::http::client::SessionState::Sending
@ Sending
ext::http::client::SessionState::Connecting
@ Connecting
ext::http::client::HttpSslOptions::ssl_client_key_path
std::string ssl_client_key_path
Path to the client key file.
Definition: includes/opentelemetry/ext/http/client/http_client.h:178
ext::http::client::HttpClient::CreateSession
virtual std::shared_ptr< Session > CreateSession(nostd::string_view url) noexcept=0
ext::http::client::Method::Options
@ Options
std
Extensions to the C++ standard library.
Definition: includes/opentelemetry/nostd/string_view.h:212
ext::http::client::SessionState::Cancelled
@ Cancelled
ext::http::client::Session::~Session
virtual ~Session()=default
ext::http::client::Request::~Request
virtual ~Request()=default
ext::http::client::SessionState::SSLHandshakeFailed
@ SSLHandshakeFailed
nostd::string_view::data
const char * data() const noexcept
Definition: includes/opentelemetry/nostd/string_view.h:56
ext::http::client::HttpSslOptions::use_ssl
bool use_ssl
Use HTTPS (true) or HTTP (false).
Definition: includes/opentelemetry/ext/http/client/http_client.h:160
ext::http::client::Method::Get
@ Get
ext::http::client::Request::AddHeader
virtual void AddHeader(nostd::string_view name, nostd::string_view value) noexcept=0
ext::http::client::HttpSslOptions::ssl_ca_cert_path
std::string ssl_ca_cert_path
Path to the CA CERT file.
Definition: includes/opentelemetry/ext/http/client/http_client.h:169
ext::http::client::Request::SetBody
virtual void SetBody(Body &body) noexcept=0
ext::http::client::Method::Patch
@ Patch
ext::http::client::EventHandler::~EventHandler
virtual ~EventHandler()=default
ext::http::client::HttpSslOptions::ssl_insecure_skip_verify
bool ssl_insecure_skip_verify
Skip SSL/TLS verifications.
Definition: includes/opentelemetry/ext/http/client/http_client.h:165
ext::http::client::Byte
uint8_t Byte
Definition: includes/opentelemetry/ext/http/client/http_client.h:106
ext::http::client::cmp_ic
Definition: includes/opentelemetry/ext/http/client/http_client.h:110
ext::http::client::EventHandler
Definition: includes/opentelemetry/ext/http/client/http_client.h:344
ext::http::client::RetryPolicy::max_attempts
std::uint32_t max_attempts
Definition: includes/opentelemetry/ext/http/client/http_client.h:245
ext::http::client::Response::GetBody
virtual const Body & GetBody() const noexcept=0
ext::http::client::Body
std::vector< Byte > Body
Definition: includes/opentelemetry/ext/http/client/http_client.h:108
ext::http::client::Result::Result
Result(std::unique_ptr< Response > res, SessionState session_state)
Definition: includes/opentelemetry/ext/http/client/http_client.h:324
ext::http::client::StatusCode
uint16_t StatusCode
Definition: includes/opentelemetry/ext/http/client/http_client.h:107
ext::http::client::Request::SetUri
virtual void SetUri(nostd::string_view uri) noexcept=0
nostd::string_view
Back port of std::string_view to work with pre-cpp-17 compilers.
Definition: includes/opentelemetry/nostd/string_view.h:37
ext::http::client::SessionState::Connected
@ Connected