blob: 9d73e8e1cba48902c092120240ce3bd89bcd49d2 [file] [log] [blame]
// Copyright 2021 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_DEVELOPER_FORENSICS_FEEDBACK_MIGRATION_SHELL_MAIN_SERVICE_H_
#define SRC_DEVELOPER_FORENSICS_FEEDBACK_MIGRATION_SHELL_MAIN_SERVICE_H_
#include <lib/async/dispatcher.h>
#include <lib/fidl/cpp/binding.h>
#include <lib/syslog/cpp/macros.h>
#include "src/developer/forensics/feedback/migration/shell/directory_migrator.h"
namespace forensics::feedback::migration_shell {
template <typename DirectoryMigratorProtocol>
class MainService {
public:
explicit MainService(async_dispatcher_t* dispatcher)
: dispatcher_(dispatcher), directory_migrator_(), connection_(&directory_migrator_) {}
void HandleDirectoryMigratorRequest(::fidl::InterfaceRequest<DirectoryMigratorProtocol> request) {
FX_CHECK(!connection_.is_bound());
connection_.Bind(std::move(request), dispatcher_);
}
private:
async_dispatcher_t* dispatcher_;
DirectoryMigrator<DirectoryMigratorProtocol> directory_migrator_;
::fidl::Binding<DirectoryMigratorProtocol> connection_;
};
} // namespace forensics::feedback::migration_shell
#endif // SRC_DEVELOPER_FORENSICS_FEEDBACK_MIGRATION_SHELL_MAIN_SERVICE_H_