diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-26 22:26:48 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-26 22:27:09 +0100 |
| commit | eba8b7ddd0a455d9e49f32dcae712c5612c0093c (patch) | |
| tree | 749a3d34546d055507a920bce4ab10e8a9945719 /Private/Source/DriveManager.cxx | |
| parent | dd192787a70a973f2474720aea49af3f6ddabb7a (diff) | |
Kernel: Major repository refactor.
Rework the repo into Private and Public modules.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/Source/DriveManager.cxx')
| -rw-r--r-- | Private/Source/DriveManager.cxx | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Private/Source/DriveManager.cxx b/Private/Source/DriveManager.cxx new file mode 100644 index 00000000..fa3deec1 --- /dev/null +++ b/Private/Source/DriveManager.cxx @@ -0,0 +1,62 @@ +/* + * ======================================================== + * + * hCore + * Copyright 2024 Mahrouss Logic, all rights reserved. + * + * ======================================================== + */ + +#include <KernelKit/DebugOutput.hpp> +#include <KernelKit/DriveManager.hpp> + +namespace hCore +{ + DriveSelector::DriveSelector() : fDrive(nullptr) {} + + DriveSelector::~DriveSelector() + { + if (fDrive) + { + this->Unmount(); + } + } + + DriveTraits& DriveSelector::GetMounted() + { + MUST_PASS(fDrive != nullptr); + return *fDrive; + } + + bool DriveSelector::Mount(DriveTraits* drive) + { + if (drive && + drive->fReady() && + fDrive == nullptr) + { + fDrive = drive; + fDrive->fMount(); + + kcout << "[Mount] Mount drive: " << fDrive->fName << "\n"; + + return true; + } + + return false; + } + + DriveTraits* DriveSelector::Unmount() + { + if (!fDrive) + return nullptr; + + auto drivePointer = fDrive; + + fDrive->fUnmount(); + fDrive = nullptr; + + kcout << "[Unmount] Mount drive: " << drivePointer->fName << "\n"; + + return drivePointer; + } +} // namespace hCore |
