// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include #include #include namespace purefs::blkdev { class disk; } namespace purefs::blkdev::internal { class disk_handle { public: static constexpr auto no_parition = -1; explicit disk_handle(std::weak_ptr disk, std::string_view name, short partition = no_parition) : m_disk(disk), m_partition(partition), m_name(name) {} auto disk() const noexcept { return m_disk.lock(); } auto partition() const noexcept { return m_partition; } auto has_partition() const noexcept { return m_partition != no_parition; } auto sectors() const noexcept -> sector_t; auto name() const noexcept { return m_name; } private: const std::weak_ptr m_disk; const short m_partition{-1}; mutable sector_t m_sectors{0}; const std::string_view m_name; }; } // namespace purefs::blkdev::internal