blob: 44e23078f8feb5d02e2b3ac1aa2f11ea45e059e2 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This defines mappings from mojom IPC representations to their native perfetto
// equivalents.
#ifndef SERVICES_TRACING_PUBLIC_MOJOM_DATA_SOURCE_CONFIG_MOJOM_TRAITS_H_
#define SERVICES_TRACING_PUBLIC_MOJOM_DATA_SOURCE_CONFIG_MOJOM_TRAITS_H_
#include <string>
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "services/tracing/public/mojom/perfetto_service.mojom-shared.h"
#include "third_party/perfetto/include/perfetto/tracing/core/chrome_config.h"
#include "third_party/perfetto/include/perfetto/tracing/core/data_source_config.h"
namespace mojo {
template <>
class StructTraits<tracing::mojom::DataSourceConfigDataView,
perfetto::DataSourceConfig> {
public:
static const std::string& name(const perfetto::DataSourceConfig& src) {
return src.name();
}
static uint32_t target_buffer(const perfetto::DataSourceConfig& src) {
return src.target_buffer();
}
static uint32_t trace_duration_ms(const perfetto::DataSourceConfig& src) {
return src.trace_duration_ms();
}
static uint64_t tracing_session_id(const perfetto::DataSourceConfig& src) {
return src.tracing_session_id();
}
static const perfetto::ChromeConfig& chrome_config(
const perfetto::DataSourceConfig& src) {
return src.chrome_config();
}
static const std::string& legacy_config(
const perfetto::DataSourceConfig& src) {
return src.legacy_config();
}
static bool Read(tracing::mojom::DataSourceConfigDataView data,
perfetto::DataSourceConfig* out);
};
} // namespace mojo
#endif // SERVICES_TRACING_PUBLIC_MOJOM_DATA_SOURCE_CONFIG_MOJOM_TRAITS_H_