Coverage Report

Created: 2023-11-12 09:30

/proc/self/cwd/source/extensions/filters/network/thrift_proxy/app_exception_impl.cc
Line
Count
Source (jump to first uncovered line)
1
#include "source/extensions/filters/network/thrift_proxy/app_exception_impl.h"
2
3
namespace Envoy {
4
namespace Extensions {
5
namespace NetworkFilters {
6
namespace ThriftProxy {
7
8
static const std::string TApplicationException = "TApplicationException";
9
static const std::string MessageField = "message";
10
static const std::string TypeField = "type";
11
static const std::string StopField = "";
12
13
DirectResponse::ResponseType AppException::encode(MessageMetadata& metadata,
14
                                                  ThriftProxy::Protocol& proto,
15
0
                                                  Buffer::Instance& buffer) const {
16
  // Handle cases where the exception occurs before the message name (e.g. some header transport
17
  // errors).
18
0
  if (!metadata.hasMethodName()) {
19
0
    metadata.setMethodName("");
20
0
  }
21
0
  if (!metadata.hasSequenceId()) {
22
0
    metadata.setSequenceId(0);
23
0
  }
24
25
0
  metadata.setMessageType(MessageType::Exception);
26
27
0
  proto.writeMessageBegin(buffer, metadata);
28
0
  proto.writeStructBegin(buffer, TApplicationException);
29
30
0
  proto.writeFieldBegin(buffer, MessageField, FieldType::String, 1);
31
0
  proto.writeString(buffer, std::string(what()));
32
0
  proto.writeFieldEnd(buffer);
33
34
0
  proto.writeFieldBegin(buffer, TypeField, FieldType::I32, 2);
35
0
  proto.writeInt32(buffer, static_cast<int32_t>(type_));
36
0
  proto.writeFieldEnd(buffer);
37
38
0
  proto.writeFieldBegin(buffer, StopField, FieldType::Stop, 0);
39
40
0
  proto.writeStructEnd(buffer);
41
0
  proto.writeMessageEnd(buffer);
42
43
0
  return DirectResponse::ResponseType::Exception;
44
0
}
45
46
} // namespace ThriftProxy
47
} // namespace NetworkFilters
48
} // namespace Extensions
49
} // namespace Envoy