123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #ifndef cmFileLockPool_h
- #define cmFileLockPool_h
- #include "cmConfigure.h"
- #include <string>
- #include <vector>
- class cmFileLock;
- class cmFileLockResult;
- class cmFileLockPool
- {
- CM_DISABLE_COPY(cmFileLockPool)
- public:
- cmFileLockPool();
- ~cmFileLockPool();
-
-
- void PushFunctionScope();
- void PopFunctionScope();
-
-
-
- void PushFileScope();
- void PopFileScope();
-
-
-
- cmFileLockResult LockFunctionScope(const std::string& filename,
- unsigned long timeoutSec);
- cmFileLockResult LockFileScope(const std::string& filename,
- unsigned long timeoutSec);
- cmFileLockResult LockProcessScope(const std::string& filename,
- unsigned long timeoutSec);
-
-
- cmFileLockResult Release(const std::string& filename);
- private:
- bool IsAlreadyLocked(const std::string& filename) const;
- class ScopePool
- {
- CM_DISABLE_COPY(ScopePool)
- public:
- ScopePool();
- ~ScopePool();
- cmFileLockResult Lock(const std::string& filename,
- unsigned long timeoutSec);
- cmFileLockResult Release(const std::string& filename);
- bool IsAlreadyLocked(const std::string& filename) const;
- private:
- typedef std::vector<cmFileLock*> List;
- typedef List::iterator It;
- typedef List::const_iterator CIt;
- List Locks;
- };
- typedef std::vector<ScopePool*> List;
- typedef List::iterator It;
- typedef List::const_iterator CIt;
- List FunctionScopes;
- List FileScopes;
- ScopePool ProcessScope;
- };
- #endif
|