MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_file_mounter.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_FILE_MOUNTER_H_1611105265
12#define INCGUARD_MGL_FILE_MOUNTER_H_1611105265
13
14#include <mutex>
15
22
23namespace MGL::File
24{
26class Mounter final : public SharedSingleton<Mounter>
27{
28public:
31 {
34 MountAccessType accessType{MountAccessType::ReadOnly};
37 };
38
40 using SharedMountProperty = std::shared_ptr<MountProperty>;
41
43 static constexpr DelegateKey kDefaultDelegateKey = MakeDelegateKey("MGL-Default");
44
45 [[nodiscard]] static STL::unique_ptr<Mounter> &GetInstanceRef() noexcept;
46
47 Result Mount(const PathView &mountName, const PathView &path, MountAccessType accessType, DelegateKey delegateKey = kDefaultDelegateKey) noexcept;
48 Result Unmount(const PathView &mountName) noexcept;
49 [[nodiscard]] SharedMountProperty Get(const PathView &mountName) noexcept;
50 [[nodiscard]] bool IsMounted(const PathView &mountName) noexcept;
51
52 Result AddDelegate(DelegateKey key, const SharedDelegate& delegate) noexcept;
53 Result RemoveDelegate(DelegateKey key) noexcept;
54 [[nodiscard]] SharedDelegate GetDelegate(DelegateKey key = kDefaultDelegateKey) noexcept;
55
56 /* ------------------------------------------------------------------------- */
61 /* ------------------------------------------------------------------------- */
63 {
64 _defaultDelegateKey = key;
65 }
66
67private:
69 std::recursive_mutex _mountMutex;
70
72 std::mutex _delegateMutex;
73
74 DelegateKey _defaultDelegateKey{kDefaultDelegateKey};
75};
76} // namespace MGL::File
77#endif // INCGUARD_MGL_FILE_MOUNTER_H_1611105265
78
79// vim: et ts=4 sw=4 sts=4
ファイルマウンタ
Definition mgl_file_mounter.h:27
static STL::unique_ptr< Mounter > & GetInstanceRef() noexcept
インスタンスの取得
Definition mgl_file_mounter.cc:21
Result AddDelegate(DelegateKey key, const SharedDelegate &delegate) noexcept
デリゲートを追加
Definition mgl_file_mounter.cc:170
std::shared_ptr< MountProperty > SharedMountProperty
マウント情報の共有ポインタ
Definition mgl_file_mounter.h:40
Result Mount(const PathView &mountName, const PathView &path, MountAccessType accessType, DelegateKey delegateKey=kDefaultDelegateKey) noexcept
マウント
Definition mgl_file_mounter.cc:38
Result Unmount(const PathView &mountName) noexcept
マウント解除
Definition mgl_file_mounter.cc:106
Result RemoveDelegate(DelegateKey key) noexcept
デリゲートを削除
Definition mgl_file_mounter.cc:199
void SetDefaultDelegate(DelegateKey key) noexcept
デフォルトのデリゲートを設定
Definition mgl_file_mounter.h:62
bool IsMounted(const PathView &mountName) noexcept
マウントされているかを取得
Definition mgl_file_mounter.cc:153
SharedMountProperty Get(const PathView &mountName) noexcept
マウント情報を取得
Definition mgl_file_mounter.cc:131
SharedDelegate GetDelegate(DelegateKey key=kDefaultDelegateKey) noexcept
デリゲートを取得
Definition mgl_file_mounter.cc:229
static constexpr DelegateKey kDefaultDelegateKey
デフォルトを表す予約デリゲートキー
Definition mgl_file_mounter.h:43
ファイルパスクラス
Definition mgl_file_path.h:20
文字列の参照のみを行うファイルパスクラス
Definition mgl_file_path_view.h:20
シングルトンテンプレート(共有ライブラリ用)
Definition mgl_singleton.h:44
MountAccessType
マウント時のアクセスタイプ
Definition mgl_file_defs.h:56
DelegateKey
デリゲートキーの型
Definition mgl_file_defs.h:23
std::shared_ptr< Delegate > SharedDelegate
デリゲートの共有ポインタ
Definition mgl_file_defs.h:44
constexpr DelegateKey MakeDelegateKey(const char *keyString, uint32_t seed=kDefaultDelegateKeySeed) noexcept
デリゲートキーの生成
Definition mgl_file_defs.h:36
MGL ファイルデリゲート
std::shared_ptr< MountWork > SharedMountWork
マウント毎のワークの共有ポインタ
Definition mgl_file_mount_work.h:51
文字列の参照のみを行うファイルパスクラス
MGL シングルトンクラス
MGL STLコンテナの代替
std::unordered_map< Key, T, Hash, Pred, Allocator< std::pair< const Key, T > > > unordered_map
std::unordered_mapの代替
Definition mgl_stl_containers.h:71
MGL STLのメモリ関連の代替
std::unique_ptr< T, Deleter > unique_ptr
MGLのアロケータを利用するユニークポインタ
Definition mgl_stl_memory.h:247
MGL STL文字列クラスの代替
マウント情報
Definition mgl_file_mounter.h:31
SharedMountWork mountWork
マウント毎のワーク
Definition mgl_file_mounter.h:36
Path path
マウントパス
Definition mgl_file_mounter.h:33
MountAccessType accessType
アクセスタイプ
Definition mgl_file_mounter.h:34
Path name
マウント名
Definition mgl_file_mounter.h:32
SharedDelegate delegate
ファイルデリゲート
Definition mgl_file_mounter.h:35