LCOV - code coverage report
Current view: top level - source/common/http/matching - data_impl.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 4 30 13.3 %
Date: 2024-01-05 06:35:25 Functions: 2 12 16.7 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/http/filter.h"
       4             : #include "envoy/server/factory_context.h"
       5             : 
       6             : namespace Envoy {
       7             : namespace Http {
       8             : namespace Matching {
       9             : 
      10             : /**
      11             :  * Implementation of HttpMatchingData, providing HTTP specific data to
      12             :  * the match tree.
      13             :  */
      14             : class HttpMatchingDataImpl : public HttpMatchingData {
      15             : public:
      16             :   explicit HttpMatchingDataImpl(const StreamInfo::StreamInfo& stream_info)
      17           2 :       : stream_info_(stream_info) {}
      18             : 
      19           0 :   static absl::string_view name() { return "http"; }
      20             : 
      21           2 :   void onRequestHeaders(const RequestHeaderMap& request_headers) {
      22           2 :     request_headers_ = &request_headers;
      23           2 :   }
      24             : 
      25           0 :   void onRequestTrailers(const RequestTrailerMap& request_trailers) {
      26           0 :     request_trailers_ = &request_trailers;
      27           0 :   }
      28             : 
      29           0 :   void onResponseHeaders(const ResponseHeaderMap& response_headers) {
      30           0 :     response_headers_ = &response_headers;
      31           0 :   }
      32             : 
      33           0 :   void onResponseTrailers(const ResponseTrailerMap& response_trailers) {
      34           0 :     response_trailers_ = &response_trailers;
      35           0 :   }
      36             : 
      37           0 :   RequestHeaderMapOptConstRef requestHeaders() const override {
      38           0 :     return makeOptRefFromPtr(request_headers_);
      39           0 :   }
      40             : 
      41           0 :   RequestTrailerMapOptConstRef requestTrailers() const override {
      42           0 :     return makeOptRefFromPtr(request_trailers_);
      43           0 :   }
      44             : 
      45           0 :   ResponseHeaderMapOptConstRef responseHeaders() const override {
      46           0 :     return makeOptRefFromPtr(response_headers_);
      47           0 :   }
      48             : 
      49           0 :   ResponseTrailerMapOptConstRef responseTrailers() const override {
      50           0 :     return makeOptRefFromPtr(response_trailers_);
      51           0 :   }
      52             : 
      53           0 :   const StreamInfo::StreamInfo& streamInfo() const override { return stream_info_; }
      54             : 
      55           0 :   const Network::ConnectionInfoProvider& connectionInfoProvider() const override {
      56           0 :     return stream_info_.downstreamAddressProvider();
      57           0 :   }
      58             : 
      59             : private:
      60             :   const StreamInfo::StreamInfo& stream_info_;
      61             :   const RequestHeaderMap* request_headers_{};
      62             :   const ResponseHeaderMap* response_headers_{};
      63             :   const RequestTrailerMap* request_trailers_{};
      64             :   const ResponseTrailerMap* response_trailers_{};
      65             : };
      66             : 
      67             : using HttpMatchingDataImplSharedPtr = std::shared_ptr<HttpMatchingDataImpl>;
      68             : 
      69             : struct HttpFilterActionContext {
      70             :   const std::string& stat_prefix_;
      71             :   OptRef<Server::Configuration::FactoryContext> factory_context_;
      72             :   OptRef<Server::Configuration::ServerFactoryContext> server_factory_context_;
      73             : };
      74             : } // namespace Matching
      75             : } // namespace Http
      76             : } // namespace Envoy

Generated by: LCOV version 1.15