diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-12-29 09:57:48 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-12-29 09:57:48 +0100 |
| commit | 8b7216aaf2dacad7ce67d734d07b047fed8ec01e (patch) | |
| tree | 7af56dd646a4d12a25024da7ad5e6406ff98f124 /dev/Kernel/src/System/SwapDiskDelegate.cc | |
| parent | 5b1bb6cc086047e99a1d246fd2d337bf76887bd8 (diff) | |
IMPL: NeFS: Add file lock feature and validation for it.
- It is added to hide files from indexing.
- And will be used to hide system files.
IMPL: Swap: Add SwapDiskDelegate class, will also work on a swap packet
structure.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/src/System/SwapDiskDelegate.cc')
| -rw-r--r-- | dev/Kernel/src/System/SwapDiskDelegate.cc | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/dev/Kernel/src/System/SwapDiskDelegate.cc b/dev/Kernel/src/System/SwapDiskDelegate.cc new file mode 100644 index 00000000..ffe8812d --- /dev/null +++ b/dev/Kernel/src/System/SwapDiskDelegate.cc @@ -0,0 +1,57 @@ +/* ------------------------------------------- + + Copyright (C) 2024, Theater Quality Corp, all rights reserved. + +------------------------------------------- */ + +#include <SystemKit/Swap.h> +#include <KernelKit/FileMgr.h> + +namespace Kernel::Detail +{ + class SwapDiskDelegate; + + class SwapDiskDelegate final + { + public: + explicit SwapDiskDelegate() = default; + ~SwapDiskDelegate() = default; + + ZKA_COPY_DEFAULT(SwapDiskDelegate); + + BOOL Write(const Char* fork_name, const SizeT fork_name_len, VoidPtr data, const SizeT data_len) + { + if (!fork_name || !fork_name_len) + return NO; + + if (data_len > mib_cast(16)) + return NO; + + if (!data) + return NO; + + FileStream file(kSwapMgrPageFile, "wb"); + + if (file.Write(fork_name, data, data_len).Error()) + { + return NO; + } + + return YES; + } + + VoidPtr Read(const Char* fork_name, const SizeT fork_name_len, const SizeT data_len) + { + if (!fork_name || !fork_name_len) + return nullptr; + + if (data_len > mib_cast(16)) + return nullptr; + + FileStream file(kSwapMgrPageFile, "rb"); + + voidPtr blob = file.Read(fork_name, data_len); + return blob; + } + }; +} // namespace Kernel::Detail
\ No newline at end of file |
