blob: 5eec3aa7e3529a576ef1f63db2eee2613c651e4a [file] [log] [blame] [edit]
// Copyright 2024 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_BLOBFS_BLOB_READER_H_
#define SRC_STORAGE_BLOBFS_BLOB_READER_H_
#include <fidl/fuchsia.fxfs/cpp/markers.h>
#include <fidl/fuchsia.fxfs/cpp/wire.h>
#include <lib/async/dispatcher.h>
#include <lib/fidl/cpp/wire/channel.h>
#include <lib/syslog/cpp/macros.h>
#include <lib/zx/vmo.h>
#include "src/storage/blobfs/blobfs.h"
#include "src/storage/lib/vfs/cpp/service.h"
namespace blobfs {
class BlobReader final : public fidl::WireServer<fuchsia_fxfs::BlobReader>, public fs::Service {
public:
explicit BlobReader(Blobfs& blobfs);
void GetVmo(fuchsia_fxfs::wire::BlobReaderGetVmoRequest* request,
GetVmoCompleter::Sync& completer) final;
using fs::Service::GetVmo;
private:
Blobfs& blobfs_;
// The ComponentRunner shuts down the VFS hosting this service before destroying Blobfs. All of
// the bindings need to be owned by this service to ensure they get destroyed before Blobfs is
// destroyed.
fidl::ServerBindingGroup<fuchsia_fxfs::BlobReader> bindings_;
};
} // namespace blobfs
#endif // SRC_STORAGE_BLOBFS_BLOB_READER_H_