| // 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 FUCHSIA_SDK_EXAMPLES_ACPI_MULTIPLY_DRIVER_MULTIPLY_SERVER_H_ |
| #define FUCHSIA_SDK_EXAMPLES_ACPI_MULTIPLY_DRIVER_MULTIPLY_SERVER_H_ |
| |
| #include <fidl/examples.acpi.multiply/cpp/wire.h> |
| #include <lib/driver/component/cpp/logger.h> |
| |
| #include "multiplier.h" |
| |
| namespace acpi_multiply { |
| |
| // FIDL server implementation for the `examples.acpi.multiply/Device` protocol |
| class AcpiMultiplyServer : public fidl::WireServer<examples_acpi_multiply::Device> { |
| public: |
| AcpiMultiplyServer(driver::Logger* logger, std::weak_ptr<AcpiMultiplier> multiplier) |
| : logger_(logger), multiplier_(multiplier) {} |
| |
| static fidl::ServerBindingRef<examples_acpi_multiply::Device> BindDeviceClient( |
| driver::Logger* logger, async_dispatcher_t* dispatcher, |
| std::weak_ptr<AcpiMultiplier> multiplier, |
| fidl::ServerEnd<examples_acpi_multiply::Device> request); |
| |
| void OnUnbound(fidl::UnbindInfo info, fidl::ServerEnd<examples_acpi_multiply::Device> server_end); |
| |
| // fidl::WireServer<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 // FUCHSIA_SDK_EXAMPLES_ACPI_MULTIPLY_DRIVER_MULTIPLY_SERVER_H_ |