blob: 840f5d1a7588b11c3a4890e489cf139d027e6bbe [file] [log] [blame]
// Copyright 2022 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_EXECUTOR_H_
#define COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_EXECUTION_MODEL_EXECUTOR_H_
#include <utility>
#include "components/segmentation_platform/internal/execution/execution_request.h"
#include "components/segmentation_platform/internal/proto/model_prediction.pb.h"
namespace segmentation_platform {
struct ExecutionRequest;
// Class used to process features and execute the model.
class ModelExecutor {
public:
ModelExecutor() = default;
virtual ~ModelExecutor() = default;
ModelExecutor(const ModelExecutor&) = delete;
ModelExecutor& operator=(const ModelExecutor&) = delete;
// Called to execute a given model. This assumes that data has been collected
// for long enough for each of the individual ML features.
using ModelExecutionCallback = ExecutionRequest::ModelExecutionCallback;
// Computes input features using `segment_info` and executes the model using
// `model_provider`, and returns result.
virtual void ExecuteModel(std::unique_ptr<ExecutionRequest> request) = 0;
};
} // namespace segmentation_platform
#endif // COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_EXECUTION_MODEL_EXECUTOR_H_