Skip to content

Commit

Permalink
Add more comments and typedefs
Browse files Browse the repository at this point in the history
Signed-off-by: Petr Pchelko <[email protected]>
  • Loading branch information
Petr Pchelko committed Aug 20, 2020
1 parent aed8788 commit 8e3ad25
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
8 changes: 4 additions & 4 deletions source/common/formatter/substitution_formatter.cc
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,9 @@ std::string JsonFormatterImpl::format(const Http::RequestHeaderMap& request_head
return absl::StrCat(log_line, "\n");
}

JsonFormatterImpl::JsonFormatMap
JsonFormatterImpl::JsonFormatMapWrapper
JsonFormatterImpl::toFormatMap(const ProtobufWkt::Struct& json_format) const {
auto output = std::make_unique<std::map<std::string, JsonFormatterImpl::JsonFormatMapValue>>();
auto output = std::make_unique<JsonFormatMap>();
for (const auto& pair : json_format.fields()) {
switch (pair.second.kind_case()) {
case ProtobufWkt::Value::kStringValue:
Expand Down Expand Up @@ -168,8 +168,8 @@ ProtobufWkt::Struct JsonFormatterImpl::toStruct(const Http::RequestHeaderMap& re
}
return ValueUtil::stringValue(str);
};
const std::function<ProtobufWkt::Value(const JsonFormatterImpl::JsonFormatMap&)>
json_format_map_callback = [&](const JsonFormatterImpl::JsonFormatMap& format) {
const std::function<ProtobufWkt::Value(const JsonFormatterImpl::JsonFormatMapWrapper&)>
json_format_map_callback = [&](const JsonFormatterImpl::JsonFormatMapWrapper& format) {
ProtobufWkt::Struct output;
auto* fields = output.mutable_fields();
JsonFormatMapVisitor visitor{json_format_map_callback, providers_callback};
Expand Down
16 changes: 10 additions & 6 deletions source/common/formatter/substitution_formatter.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,22 +113,26 @@ class JsonFormatterImpl : public Formatter {
absl::string_view local_reply_body) const override;

private:
struct JsonFormatMap;
struct JsonFormatMapWrapper;
using JsonFormatMapValue =
absl::variant<const std::vector<FormatterProviderPtr>, const JsonFormatMap>;
struct JsonFormatMap {
std::unique_ptr<std::map<std::string, JsonFormatMapValue>> value_;
absl::variant<const std::vector<FormatterProviderPtr>, const JsonFormatMapWrapper>;
// Although not required for JSON, it is nice to have the order of properties
// preserved between the format and the log entry, thus std::map
using JsonFormatMap = std::map<std::string, JsonFormatMapValue>;
using JsonFormatMapPtr = std::unique_ptr<JsonFormatMap>;
struct JsonFormatMapWrapper{
JsonFormatMapPtr value_;
};

const bool preserve_types_;
const JsonFormatMap json_output_format_;
const JsonFormatMapWrapper json_output_format_;

ProtobufWkt::Struct toStruct(const Http::RequestHeaderMap& request_headers,
const Http::ResponseHeaderMap& response_headers,
const Http::ResponseTrailerMap& response_trailers,
const StreamInfo::StreamInfo& stream_info,
absl::string_view local_reply_body) const;
JsonFormatMap toFormatMap(const ProtobufWkt::Struct& json_format) const;
JsonFormatMapWrapper toFormatMap(const ProtobufWkt::Struct& json_format) const;
};

/**
Expand Down

0 comments on commit 8e3ad25

Please sign in to comment.