LCOV - code coverage report
Current view: top level - source/common/http - message_impl.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 5 9 55.6 %
Date: 2024-01-05 06:35:25 Functions: 6 13 46.2 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <string>
       4             : 
       5             : #include "envoy/http/header_map.h"
       6             : #include "envoy/http/message.h"
       7             : 
       8             : #include "source/common/buffer/buffer_impl.h"
       9             : #include "source/common/common/non_copyable.h"
      10             : #include "source/common/http/header_map_impl.h"
      11             : 
      12             : namespace Envoy {
      13             : namespace Http {
      14             : 
      15             : /**
      16             :  * Implementation of Http::Message. This implementation does not support streaming.
      17             :  */
      18             : template <class HeadersInterfaceType, class HeadersImplType, class TrailersInterfaceType,
      19             :           class TrailersImplType>
      20             : class MessageImpl : public Message<HeadersInterfaceType, TrailersInterfaceType> {
      21             : public:
      22         107 :   MessageImpl() : headers_(HeadersImplType::create()) {}
      23           3 :   MessageImpl(std::unique_ptr<HeadersInterfaceType>&& headers) : headers_(std::move(headers)) {}
      24             : 
      25             :   // Http::Message
      26         911 :   HeadersInterfaceType& headers() override { return *headers_; }
      27           6 :   Buffer::Instance& body() override { return body_; }
      28           0 :   TrailersInterfaceType* trailers() override { return trailers_.get(); }
      29           0 :   void trailers(std::unique_ptr<TrailersInterfaceType>&& trailers) override {
      30           0 :     trailers_ = std::move(trailers);
      31           0 :   }
      32           3 :   std::string bodyAsString() const override { return body_.toString(); }
      33             : 
      34             : private:
      35             :   std::unique_ptr<HeadersInterfaceType> headers_;
      36             :   Buffer::OwnedImpl body_;
      37             :   std::unique_ptr<TrailersInterfaceType> trailers_;
      38             : };
      39             : 
      40             : using RequestMessageImpl =
      41             :     MessageImpl<RequestHeaderMap, RequestHeaderMapImpl, RequestTrailerMap, RequestTrailerMapImpl>;
      42             : using ResponseMessageImpl = MessageImpl<ResponseHeaderMap, ResponseHeaderMapImpl,
      43             :                                         ResponseTrailerMap, ResponseTrailerMapImpl>;
      44             : 
      45             : } // namespace Http
      46             : } // namespace Envoy

Generated by: LCOV version 1.15