blob: 78f35e1fb1f5c78ef257eec3771da6202b26f2a9 [file] [log] [blame]
// Copyright 2022 The Fuchsia 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 SRC_ACPI_MULTIPLY_MULTIPLY_SERVER_H_
#define SRC_ACPI_MULTIPLY_MULTIPLY_SERVER_H_
#include <fidl/fuchsia.examples.acpi.multiply/cpp/wire.h>
#include <lib/driver2/logger.h>
#include "multiplier.h"
namespace acpi_multiply {
// FIDL server implementation for the `fuchsia.examples.acpi.multiply/Device` protocol
class AcpiMultiplyServer : public fidl::WireServer<fuchsia_examples_acpi_multiply::Device> {
public:
AcpiMultiplyServer(driver::Logger* logger, std::weak_ptr<AcpiMultiplier> multiplier)
: logger_(logger), multiplier_(multiplier) {}
static fidl::ServerBindingRef<fuchsia_examples_acpi_multiply::Device> BindDeviceClient(
driver::Logger* logger, async_dispatcher_t* dispatcher,
std::weak_ptr<AcpiMultiplier> multiplier,
fidl::ServerEnd<fuchsia_examples_acpi_multiply::Device> request);
void OnUnbound(fidl::UnbindInfo info,
fidl::ServerEnd<fuchsia_examples_acpi_multiply::Device> server_end);
// fidl::WireServer<fuchsia_examples_acpi_multiply::Device>
void Multiply(MultiplyRequestView request, MultiplyCompleter::Sync& completer) override;
private:
driver::Logger* logger_;
std::weak_ptr<AcpiMultiplier> multiplier_;
};
} // namespace acpi_multiply
#endif /* SRC_ACPI_MULTIPLY_MULTIPLY_SERVER_H_ */