LCOV - code coverage report
Current view: top level - envoy/http - request_id_extension.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 1 1 100.0 %
Date: 2024-01-05 06:35:25 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <memory>
       4             : #include <string>
       5             : 
       6             : #include "envoy/common/pure.h"
       7             : #include "envoy/http/header_map.h"
       8             : #include "envoy/tracing/trace_reason.h"
       9             : 
      10             : namespace Envoy {
      11             : namespace Http {
      12             : 
      13             : /**
      14             :  * Abstract request id utilities for getting/setting the request IDs and tracing status of requests
      15             :  */
      16             : class RequestIDExtension {
      17             : public:
      18         310 :   virtual ~RequestIDExtension() = default;
      19             : 
      20             :   /**
      21             :    *  Get the request ID from the request headers.
      22             :    * @param request_headers supplies the incoming request headers for retrieving the request ID.
      23             :    * @return the string view or nullopt if the request ID is invalid.
      24             :    */
      25             :   virtual absl::optional<absl::string_view>
      26             :   get(const Http::RequestHeaderMap& request_headers) const PURE;
      27             : 
      28             :   /**
      29             :    * Get and convert the request ID to a 64-bit integer representation for using in modulo, etc.
      30             :    * calculations.
      31             :    * @param request_headers supplies the incoming request headers for retrieving the request ID.
      32             :    * @return the integer or nullopt if the request ID is invalid.
      33             :    */
      34             :   virtual absl::optional<uint64_t>
      35             :   getInteger(const Http::RequestHeaderMap& request_headers) const PURE;
      36             : 
      37             :   /**
      38             :    * Directly set a request ID into the provided request headers. Override any previous request ID
      39             :    * if any.
      40             :    * @param request_headers supplies the incoming request headers for setting a request ID.
      41             :    * @param force specifies if a new request ID should be forcefully set if one is already present.
      42             :    */
      43             :   virtual void set(Http::RequestHeaderMap& request_headers, bool force) PURE;
      44             : 
      45             :   /**
      46             :    * Preserve request ID in response headers if any is set in the request headers.
      47             :    * @param response_headers supplies the downstream response headers for setting the request ID.
      48             :    * @param request_headers supplies the incoming request headers for retrieving the request ID.
      49             :    */
      50             :   virtual void setInResponse(Http::ResponseHeaderMap& response_headers,
      51             :                              const Http::RequestHeaderMap& request_headers) PURE;
      52             : 
      53             :   /**
      54             :    * Get the current tracing reason of a request given its headers.
      55             :    * @param request_headers supplies the incoming request headers for retrieving the request ID.
      56             :    * @return trace reason of the request based on the given headers.
      57             :    */
      58             :   virtual Tracing::Reason getTraceReason(const Http::RequestHeaderMap& request_headers) PURE;
      59             : 
      60             :   /**
      61             :    * Set the tracing status of a request.
      62             :    * @param request_headers supplies the incoming request headers for setting the trace reason.
      63             :    * @param status the trace reason that should be set for this request.
      64             :    */
      65             :   virtual void setTraceReason(Http::RequestHeaderMap& request_headers, Tracing::Reason reason) PURE;
      66             : 
      67             :   /**
      68             :    * Get whether to use request_id based sampling policy or not.
      69             :    * @return whether to use request_id based sampling policy or not.
      70             :    */
      71             :   virtual bool useRequestIdForTraceSampling() const PURE;
      72             : };
      73             : 
      74             : using RequestIDExtensionSharedPtr = std::shared_ptr<RequestIDExtension>;
      75             : 
      76             : } // namespace Http
      77             : } // namespace Envoy

Generated by: LCOV version 1.15