blob: 83c4f2be57d24f04b79cd4d151280fec8a80c9b1 [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_SELECTION_REQUEST_HANDLER_H_
#define COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_SELECTION_REQUEST_HANDLER_H_
#include "base/functional/callback_helpers.h"
#include "base/memory/scoped_refptr.h"
#include "components/segmentation_platform/internal/data_collection/training_data_collector.h"
#include "components/segmentation_platform/internal/scheduler/execution_service.h"
#include "components/segmentation_platform/internal/selection/segment_result_provider.h"
#include "components/segmentation_platform/public/input_context.h"
#include "components/segmentation_platform/public/proto/prediction_result.pb.h"
#include "components/segmentation_platform/public/result.h"
namespace segmentation_platform {
struct Config;
struct PredictionOptions;
// RequestHandler handles client API requests for a single client. Internally,
// it invokes the result provider for getting raw results and converts them to
// the postprocessed results as required by the classification/regression API.
// Only used for on-demand executions.
class RequestHandler {
public:
RequestHandler() = default;
virtual ~RequestHandler() = default;
// Creates the instance.
static std::unique_ptr<RequestHandler> Create(
const Config& config,
std::unique_ptr<SegmentResultProvider> result_provider,
ExecutionService* execution_service,
StorageService* storage_service);
// Fetches raw result for on demand executions.
virtual void GetPredictionResult(const PredictionOptions& options,
scoped_refptr<InputContext> input_context,
RawResultCallback callback) = 0;
};
} // namespace segmentation_platform
#endif // COMPONENTS_SEGMENTATION_PLATFORM_INTERNAL_SELECTION_REQUEST_HANDLER_H_