blob: bd8777bd1eed229b8039f5a6ef2c67dc3be723fe [file] [log] [blame]
// Copyright 2020 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 SRC_DEVELOPER_FORENSICS_FEEDBACK_DATA_INSPECT_MANAGER_H_
#define SRC_DEVELOPER_FORENSICS_FEEDBACK_DATA_INSPECT_MANAGER_H_
#include <lib/inspect/cpp/vmo/types.h>
#include <cstdint>
#include "src/developer/forensics/utils/inspect_node_manager.h"
#include "src/developer/forensics/utils/inspect_protocol_stats.h"
#include "src/lib/fxl/macros.h"
namespace forensics {
namespace feedback_data {
// Encapsulates the global state exposed through Inspect.
class InspectManager {
public:
InspectManager(inspect::Node* root_node);
// Register creating or closing a connection to ComponentDataRegister.
void UpdateComponentDataRegisterProtocolStats(InspectProtocolStatsUpdateFn update);
// Register creating or closing a connection to DataProvider.
void UpdateDataProviderProtocolStats(InspectProtocolStatsUpdateFn update);
// Register creating or closing a connection to DataProviderController.
void UpdateDataProviderControllerProtocolStats(InspectProtocolStatsUpdateFn update);
// Register creating or closing a connection to DeviceIdProvider.
void UpdateDeviceIdProviderProtocolStats(InspectProtocolStatsUpdateFn update);
private:
InspectNodeManager node_manager_;
InspectProtocolStats component_data_register_stats_;
InspectProtocolStats data_provider_stats_;
InspectProtocolStats data_provider_controller_stats_;
InspectProtocolStats device_id_provider_stats_;
FXL_DISALLOW_COPY_AND_ASSIGN(InspectManager);
};
} // namespace feedback_data
} // namespace forensics
#endif // SRC_DEVELOPER_FORENSICS_FEEDBACK_DATA_INSPECT_MANAGER_H_