blob: 551910bb5d41d990d01fbfbdb9e4bed01165571c [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_BIND_LIBRARY_PARENT_GIZMO_SERVER_H_
#define SRC_BIND_LIBRARY_PARENT_GIZMO_SERVER_H_
#include <fidl/examples.gizmo/cpp/wire.h>
#include <lib/driver/component/cpp/logger.h>
namespace parent_driver {
class GizmoServer : public fidl::WireServer<examples_gizmo::TestingProtocol> {
public:
GizmoServer(driver::Logger* logger) : logger_(logger) {}
virtual ~GizmoServer() = default;
static fidl::ServerBindingRef<examples_gizmo::TestingProtocol> BindDeviceClient(
std::shared_ptr<GizmoServer> server_impl, async_dispatcher_t* dispatcher,
fidl::ServerEnd<examples_gizmo::TestingProtocol> request) {
// Bind each connection request to the shared instance.
return fidl::BindServer(dispatcher, std::move(request), server_impl,
std::mem_fn(&GizmoServer::OnUnbound));
}
void OnUnbound(fidl::UnbindInfo info,
fidl::ServerEnd<examples_gizmo::TestingProtocol> server_end) {
if (info.is_peer_closed()) {
FDF_LOG(DEBUG, "Client disconnected");
} else if (!info.is_user_initiated()) {
FDF_LOG(ERROR, "Client connection unbound: %s", info.status_string());
}
}
// fidl::WireServer<examples_gizmo::TestingProtocol>
void Get(GetCompleter::Sync& completer) {
FDF_LOG(INFO, "Received TestingProtocol.Get request.");
}
private:
driver::Logger* logger_;
};
} // namespace parent_driver
#endif // SRC_BIND_LIBRARY_PARENT_GIZMO_SERVER_H_