/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 |