Coverage Report

Created: 2024-09-19 09:45

/proc/self/cwd/envoy/http/message.h
Line
Count
Source
1
#pragma once
2
3
#include <memory>
4
#include <string>
5
6
#include "envoy/buffer/buffer.h"
7
#include "envoy/http/header_map.h"
8
9
namespace Envoy {
10
namespace Http {
11
12
/**
13
 * Wraps an HTTP message including its headers, body, and any trailers.
14
 */
15
template <class HeaderType, class TrailerType> class Message {
16
public:
17
33.2k
  virtual ~Message() = default;
Envoy::Http::Message<Envoy::Http::ResponseHeaderMap, Envoy::Http::ResponseTrailerMap>::~Message()
Line
Count
Source
17
5.76k
  virtual ~Message() = default;
Envoy::Http::Message<Envoy::Http::RequestHeaderMap, Envoy::Http::RequestTrailerMap>::~Message()
Line
Count
Source
17
27.4k
  virtual ~Message() = default;
18
19
  /**
20
   * @return HeaderType& the message headers.
21
   */
22
  virtual HeaderType& headers() PURE;
23
24
  /**
25
   * @return Buffer::Instance the message body, if any. Callers are free to modify the body.
26
   */
27
  virtual Buffer::Instance& body() PURE;
28
29
  /**
30
   * @return TrailerType* the message trailers, if any.
31
   */
32
  virtual TrailerType* trailers() PURE;
33
34
  /**
35
   * Set the trailers.
36
   * @param trailers supplies the new trailers.
37
   */
38
  virtual void trailers(std::unique_ptr<TrailerType>&& trailers) PURE;
39
40
  /**
41
   * @return std::string the message body as a std::string.
42
   */
43
  virtual std::string bodyAsString() const PURE;
44
};
45
46
using RequestMessage = Message<RequestHeaderMap, RequestTrailerMap>;
47
using RequestMessagePtr = std::unique_ptr<RequestMessage>;
48
using ResponseMessage = Message<ResponseHeaderMap, ResponseTrailerMap>;
49
using ResponseMessagePtr = std::unique_ptr<ResponseMessage>;
50
51
} // namespace Http
52
} // namespace Envoy