| // 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 <zircon/compiler.h> |
| |
| #include <fs/transaction/transaction_handler.h> |
| #include <storage/buffer/array_buffer.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_t Attach(const char* name, fs::TransactionHandler* device) { |
| return ZX_OK; |
| } |
| zx_status_t Detach(fs::TransactionHandler* device) { return ZX_OK; } |
| |
| [[nodiscard]] zx_status_t Shrink(size_t block_count); |
| [[nodiscard]] zx_status_t Grow(size_t block_count); |
| }; |
| |
| } // namespace minfs |
| |
| #endif // SRC_STORAGE_MINFS_RESIZEABLE_ARRAY_BUFFER_H_ |