1 #pragma once
2 
3 #include "erase.hpp"
4 #include "util.hpp"
5 
6 #include <string_view>
7 
8 namespace estoraged
9 {
10 
11 class VerifyDriveGeometry : public Erase
12 {
13   public:
14     /** @brief Creates a verifyDriveGeomentry erase object.
15      *
16      *  @param[in] inDevPath - the linux device path for the block device.
17      */
18     VerifyDriveGeometry(std::string_view inDevPath) : Erase(inDevPath) {}
19 
20     /** @brief Test if input is in between the max and min expected sizes,
21      * and throws errors accordingly.
22      *
23      *  @param[in] eraseMaxGeometry - the max expected size to erase.
24      *  @param[in] eraseMinGeometry - the min expected size to erase.
25      *  @param[in] bytes - Size of the block device.
26      */
27     void geometryOkay(uint64_t eraseMaxGeometry, uint64_t eraseMinGemoetry)
28     {
29         geometryOkay(eraseMaxGeometry, eraseMinGemoetry,
30                      util::findSizeOfBlockDevice(devPath));
31     }
32     void geometryOkay(uint64_t eraseMaxGeometry, uint64_t eraseMinGemoetry,
33                       uint64_t bytes);
34 };
35 
36 } // namespace estoraged
37