#include "src/trace_processor/importers/proto/winscope/protolog_parser.h"
#include <cinttypes>
#include <cstddef>
#include <cstdint>
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include "perfetto/ext/base/flat_hash_map.h"
#include "perfetto/ext/base/string_utils.h"
#include "perfetto/ext/base/string_view.h"
#include "perfetto/protozero/field.h"
#include "protos/perfetto/trace/android/protolog.pbzero.h"
#include "protos/perfetto/trace/interned_data/interned_data.pbzero.h"
#include "protos/perfetto/trace/profiling/profile_common.pbzero.h"
#include "protos/perfetto/trace/profiling/profile_packet.pbzero.h"
#include "src/trace_processor/containers/string_pool.h"
#include "src/trace_processor/importers/proto/packet_sequence_state_generation.h"
#include "src/trace_processor/importers/proto/winscope/protolog_message_decoder.h"
#include "src/trace_processor/importers/proto/winscope/protolog_messages_tracker.h"
#include "src/trace_processor/importers/proto/winscope/winscope.descriptor.h"
#include "src/trace_processor/storage/stats.h"
#include "src/trace_processor/storage/trace_storage.h"
#include "src/trace_processor/tables/winscope_tables_py.h"
#include "src/trace_processor/types/trace_processor_context.h"
namespace perfetto::trace_processor {
ProtoLogParser::ProtoLogParser(TraceProcessorContext* context)
: … { … }
void ProtoLogParser::ParseProtoLogMessage(
PacketSequenceStateGeneration* sequence_state,
protozero::ConstBytes blob,
int64_t timestamp) { … }
void ProtoLogParser::ParseProtoLogViewerConfig(protozero::ConstBytes blob) { … }
void ProtoLogParser::AddViewerConfigToMessageDecoder(
protos::pbzero::ProtoLogViewerConfig::Decoder& protolog_viewer_config) { … }
void ProtoLogParser::ProcessPendingMessagesWithId(uint64_t message_id) { … }
void ProtoLogParser::PopulateReservedRowWithMessage(
tables::ProtoLogTable::Id table_row_id,
ProtoLogLevel log_level,
std::string& group_tag,
std::string& message,
std::optional<StringId> stacktrace,
std::optional<std::string>& location) { … }
}