blob: f9f9bc60c534dff8f0d1fc72b93bb31579e3ae72 [file] [log] [blame]
// Copyright 2020 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_GRAMMAR_CHECKER_IMPL_H_
#define ML_GRAMMAR_CHECKER_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/grammar/grammar_interface.pb.h"
#include "ml/grammar_library.h"
#include "ml/mojom/grammar_checker.mojom.h"
namespace ml {
class GrammarCheckerImpl
: public chromeos::machine_learning::mojom::GrammarChecker {
public:
// Constructs a GrammarCheckerImpl; and set disconnect handler so that the
// GrammarCheckerImpl will be deleted when the mojom connection is destroyed.
// Returns whether the object is create successfully.
static bool Create(
mojo::PendingReceiver<chromeos::machine_learning::mojom::GrammarChecker>
receiver);
// Called when mojom connection is destroyed.
~GrammarCheckerImpl();
private:
// Creates a GrammarChecker and Binds to `receiver` inside so that Check can
// be called on the other side for a particular grammar check query.
GrammarCheckerImpl(
mojo::PendingReceiver<chromeos::machine_learning::mojom::GrammarChecker>
receiver);
GrammarCheckerImpl(const GrammarCheckerImpl&) = delete;
GrammarCheckerImpl& operator=(const GrammarCheckerImpl&) = delete;
// mojom::GrammarChecker
void Check(chromeos::machine_learning::mojom::GrammarCheckerQueryPtr query,
CheckCallback callback) override;
bool successfully_loaded_;
// Pointer to the internal implementation of GrammarChecker inside the
// GrammarLibrary.
::GrammarChecker checker_;
const ml::GrammarLibrary* const library_;
mojo::Receiver<chromeos::machine_learning::mojom::GrammarChecker> receiver_;
};
} // namespace ml
#endif // ML_GRAMMAR_CHECKER_IMPL_H_