blob: a5164cf851b2045cf8c2e70a14dc3c1e0686b432 [file] [log] [blame]
Hector Dearmand8c3d5c2019-08-06 13:28:23 +01001/*
2 * Copyright (C) 2019 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef SRC_TRACE_PROCESSOR_FORWARDING_TRACE_PARSER_H_
18#define SRC_TRACE_PROCESSOR_FORWARDING_TRACE_PARSER_H_
19
Lalit Maganti1534bb72021-04-23 14:11:26 +010020#include "src/trace_processor/importers/common/chunked_trace_reader.h"
Hector Dearmand8c3d5c2019-08-06 13:28:23 +010021
Lalit Maganti0faddc42020-04-10 17:58:24 +010022#include "src/trace_processor/types/trace_processor_context.h"
Hector Dearmand8c3d5c2019-08-06 13:28:23 +010023
24namespace perfetto {
25namespace trace_processor {
26
27enum TraceType {
28 kUnknownTraceType,
29 kProtoTraceType,
30 kJsonTraceType,
31 kFuchsiaTraceType,
32 kSystraceTraceType,
33 kGzipTraceType,
34 kCtraceTraceType,
Primiano Tucci50446cb2020-02-14 10:40:23 +000035 kNinjaLogTraceType,
Hector Dearmand8c3d5c2019-08-06 13:28:23 +010036};
37
38TraceType GuessTraceType(const uint8_t* data, size_t size);
39
40class ForwardingTraceParser : public ChunkedTraceReader {
41 public:
42 explicit ForwardingTraceParser(TraceProcessorContext*);
43 ~ForwardingTraceParser() override;
44
45 // ChunkedTraceReader implementation
Primiano Tucci3264b592021-11-08 18:20:51 +000046 util::Status Parse(TraceBlobView) override;
Primiano Tucci40da82f2020-02-13 18:04:35 +000047 void NotifyEndOfFile() override;
Hector Dearmand8c3d5c2019-08-06 13:28:23 +010048
49 private:
50 TraceProcessorContext* const context_;
51 std::unique_ptr<ChunkedTraceReader> reader_;
52};
53
54} // namespace trace_processor
55} // namespace perfetto
56
57#endif // SRC_TRACE_PROCESSOR_FORWARDING_TRACE_PARSER_H_