// 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);

  // 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);
  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_
