| // Copyright 2020 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_MINFS_RESIZEABLE_ARRAY_BUFFER_H_ |
| #define SRC_STORAGE_MINFS_RESIZEABLE_ARRAY_BUFFER_H_ |
| |
| #include <lib/zx/status.h> |
| #include <zircon/compiler.h> |
| |
| #include <storage/buffer/array_buffer.h> |
| |
| #include "src/lib/storage/vfs/cpp/transaction/transaction_handler.h" |
| |
| namespace minfs { |
| |
| class Bcache; |
| |
| class ResizeableArrayBuffer : public storage::ArrayBuffer { |
| public: |
| using Handle = void*; |
| |
| explicit ResizeableArrayBuffer(uint32_t block_size) : ArrayBuffer(1, block_size) {} |
| explicit ResizeableArrayBuffer(size_t capacity, uint32_t block_size) |
| : ArrayBuffer(capacity, block_size) {} |
| |
| // Avoid using this method unless *absolutely* necessary. Eventually, other interfaces that take |
| // different handle types should go away and this should no longer be required. |
| Handle GetHandle() { return Data(0); } |
| |
| [[nodiscard]] zx::status<> Attach(const char* name, fs::TransactionHandler* device) { |
| return zx::ok(); |
| } |
| zx::status<> Detach(fs::TransactionHandler* device) { return zx::ok(); } |
| |
| [[nodiscard]] zx::status<> Shrink(size_t block_count); |
| [[nodiscard]] zx::status<> Grow(size_t block_count); |
| }; |
| |
| } // namespace minfs |
| |
| #endif // SRC_STORAGE_MINFS_RESIZEABLE_ARRAY_BUFFER_H_ |