blob: 1571ed830d4a05cf521d02243d89b3b1fbcd3c0a [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.
library fuchsia.metricbroker;
using fuchsia.mem;
using zx;
// Provides a service for components to register themselves as metric providers.
// When the Broker service comes up(if it comes up), it will request the
// provider's info.
[Discoverable]
protocol Registry {
// Register `provider` with the metric registry. If and when the Registry service comes up,
// will perform IPC to request the provider's `ProjectInfo`.
RegisterMetricProvider(Provider provider) -> (zx.status status);
};
// Represents a service that is interested in providing metrics to the Registry,
// such that at a later stage these will be mapped to consuming services based
// on the project configuration.
protocol Provider {
// Returns a `ProjectInfo` with enough information for the metrics to be processed.
GetProviderInfo() -> (ProviderInfo info) error zx.status;
};
// Describes a collection of Inspect metrics, both where to read them from, and how to export them.
struct InspectCollectionConfig {
InspectConfig inspect_config;
InspectSource inspect_source;
};
// Information for identifying a metric provider and how should it be
// handled by the broker.
struct ProviderInfo {
// Configuration data for connecting to the Cobalt service.
// If empty, defaults are used from the calling program *somehow*.
// TODO(gevalentino): fxbug.dev/4556
CobaltProjectConfig? cobalt_configuration;
// Configuration data for reading inspect data and passing it along over Cobalt.
// May be empty, in which case no inspect data is collected.
InspectCollectionConfig? inspect_configuration;
};
// Data needed for forwarding cobalt metrics.
struct CobaltProjectConfig {
// Serialized cobalt project configuration.
// If this is set, it will override the usage of project name.
fuchsia.mem.Buffer? cobalt_configuration;
// Project Name as expected by Cobalt Service.
string:100? project_name;
};
struct InspectSource {
// Inspection data served over a VMO.
zx.handle:VMO vmo;
};
// The configuration that actually describes where to find data in the InspectSource and turn it
// into Cobalt metrics
flexible union InspectConfig {
// Inline configuration information.
1: fuchsia.mem.Buffer buffer;
// Reference to a broker built-in project ID that contains the config data. This is useful
// for components that do not have access to filesystems.
2: string:100 project_name;
};