blob: 9b9018a8528a9c2709dbed9894eecdf04f54123c [file] [log] [blame]
// Copyright 2021 The Chromium OS 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 ML_TEXT_SUGGESTER_IMPL_H_
#define ML_TEXT_SUGGESTER_IMPL_H_
#include <base/callback_forward.h>
#include <base/macros.h>
#include <mojo/public/cpp/bindings/pending_receiver.h>
#include <mojo/public/cpp/bindings/receiver.h>
#include "chrome/knowledge/suggest/text_suggester_interface.pb.h"
#include "ml/mojom/text_suggester.mojom.h"
#include "ml/text_suggestions.h"
namespace ml {
class TextSuggesterImpl
: public chromeos::machine_learning::mojom::TextSuggester {
public:
// Constructs a TextSuggesterImpl; and set disconnect handler so
// that the TextSuggesterImpl will be deleted when the mojom connection is
// destroyed. Returns whether the object is created successfully.
static bool Create(
mojo::PendingReceiver<chromeos::machine_learning::mojom::TextSuggester>
receiver,
chromeos::machine_learning::mojom::TextSuggesterSpecPtr spec);
// Called when mojom connection is destroyed.
~TextSuggesterImpl();
private:
// Creates a TextSuggester and Binds to `receiver` inside so that
// Suggest can be called on the other side for a particular text
// suggester query.
TextSuggesterImpl(
mojo::PendingReceiver<chromeos::machine_learning::mojom::TextSuggester>
receiver,
chromeos::machine_learning::mojom::TextSuggesterSpecPtr spec);
TextSuggesterImpl(const TextSuggesterImpl&) = delete;
TextSuggesterImpl& operator=(const TextSuggesterImpl&) = delete;
// mojom::TextSuggester
void Suggest(chromeos::machine_learning::mojom::TextSuggesterQueryPtr query,
SuggestCallback callback) override;
bool successfully_loaded_;
// Pointer to the internal implementation of TextSuggester
// inside of TextSuggestions.
::TextSuggester suggester_;
const ml::TextSuggestions* const library_;
mojo::Receiver<chromeos::machine_learning::mojom::TextSuggester> receiver_;
};
}; // namespace ml
#endif // ML_TEXT_SUGGESTER_IMPL_H_