blob: a13b821e98d2d8145dca28beb0bcfdd8dee7bea8 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GARNET_BIN_TRACE2JSON_TRACE_PARSER_H_
#define GARNET_BIN_TRACE2JSON_TRACE_PARSER_H_
#include <lib/trace-engine/fields.h>
#include <stdint.h>
#include <array>
#include <ostream>
#include <vector>
#include <trace-reader/reader.h>
#include "garnet/lib/trace_converters/chromium_exporter.h"
namespace tracing {
class FuchsiaTraceParser {
public:
explicit FuchsiaTraceParser(std::ostream* out);
~FuchsiaTraceParser();
bool ParseComplete(std::istream*);
private:
static constexpr size_t kReadBufferSize = trace::RecordFields::kMaxRecordSizeBytes * 4;
ChromiumExporter exporter_;
std::array<char, kReadBufferSize> buffer_;
// The number of bytes of |buffer_| in use.
size_t buffer_end_ = 0;
trace::TraceReader reader_;
};
} // namespace tracing
#endif // GARNET_BIN_TRACE2JSON_TRACE_PARSER_H_