blob: 5f4dd276a20fc19b77065d9382c986d9efd0f533 [file] [log] [blame]
// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_EXECUTION_MODEL_EXECUTION_MANAGER_H_
#define COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_EXECUTION_MODEL_EXECUTION_MANAGER_H_
#include "base/functional/callback_forward.h"
#include "components/segmentation_platform/public/proto/segmentation_platform.pb.h"
namespace segmentation_platform {
namespace proto {
class SegmentInfo;
} // namespace proto
class ModelProvider;
// The ModelExecutionManager is used to own ModelProvider(s) that interact with
// optimization_guide, and not used for default model. All model updates are
// saved to database.
class ModelExecutionManager {
public:
virtual ~ModelExecutionManager() = default;
// Disallow copy/assign.
ModelExecutionManager(const ModelExecutionManager&) = delete;
ModelExecutionManager& operator=(const ModelExecutionManager&) = delete;
// Invoked whenever there are changes to the state of a segmentation model.
// Will not be invoked unless the proto::SegmentInfo is valid.
using SegmentationModelUpdatedCallback =
base::RepeatingCallback<void(proto::SegmentInfo)>;
virtual ModelProvider* GetProvider(proto::SegmentId segment_id) = 0;
protected:
ModelExecutionManager() = default;
};
} // namespace segmentation_platform
#endif // COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_EXECUTION_MODEL_EXECUTION_MANAGER_H_