blob: 90e81dfd5c86dcbf734846dc28814b82e696f1df [file] [log] [blame]
// Copyright 2019 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_STORAGE_FSHOST_ADMIN_SERVER_H_
#define SRC_STORAGE_FSHOST_ADMIN_SERVER_H_
#include <fidl/fuchsia.fshost/cpp/wire.h>
#include <lib/async-loop/default.h>
#include <thread>
#include "src/lib/storage/vfs/cpp/service.h"
#include "src/storage/fshost/fs-manager.h"
namespace fshost {
class FsManager;
class AdminServer final : public fidl::WireServer<fuchsia_fshost::Admin> {
public:
explicit AdminServer(FsManager* fs_manager) : fs_manager_(fs_manager) {}
// Creates a new fs::Service backed by a new AdminServer, to be inserted into
// a pseudo fs.
static fbl::RefPtr<fs::Service> Create(FsManager* fs_manager, async_dispatcher* dispatcher);
// Implementation of the Shutdown method from the FIDL protocol.
void Shutdown(ShutdownRequestView request, ShutdownCompleter::Sync& completer) override;
void Mount(MountRequestView request, MountCompleter::Sync& completer) override;
void Unmount(UnmountRequestView request, UnmountCompleter::Sync& completer) override;
void GetDevicePath(GetDevicePathRequestView request,
GetDevicePathCompleter::Sync& completer) override;
private:
FsManager* fs_manager_;
};
} // namespace fshost
#endif // SRC_STORAGE_FSHOST_ADMIN_SERVER_H_