Extracted SemaphoreLocker into it's own file.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32904 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2009-09-02 14:53:06 +00:00
parent 8dadca32b1
commit 8e3916f8ef
3 changed files with 45 additions and 35 deletions
+2 -34
View File
@@ -19,46 +19,14 @@
#include <String.h>
#include <SymLink.h>
#include "AutoLocker.h"
#include "InstallerWindow.h"
// TODO: For PACKAGES_DIRECTORY and VAR_DIRECTORY, not so nice...
#include "SemaphoreLocker.h"
using std::nothrow;
// SemaphoreLocking
class SemaphoreLocking {
public:
inline bool Lock(sem_id* lockable)
{
return acquire_sem(*lockable) == B_OK;
}
inline void Unlock(sem_id* lockable)
{
release_sem(*lockable);
}
};
// SemaphoreLocker
class SemaphoreLocker : public AutoLocker<sem_id, SemaphoreLocking> {
public:
inline SemaphoreLocker(sem_id semaphore, bool alreadyLocked = false,
bool lockIfNotLocked = true)
:
AutoLocker<sem_id, SemaphoreLocking>(),
fSem(semaphore)
{
SetTo(&fSem, alreadyLocked, lockIfNotLocked);
}
private:
sem_id fSem;
};
CopyEngine::CopyEngine(const BMessenger& messenger, BMessage* message)
:
fBufferQueue(),
+2 -1
View File
@@ -18,6 +18,7 @@ class BFile;
class BMessage;
class BMessenger;
class CopyEngine {
public:
CopyEngine(const BMessenger& messenger,
@@ -109,4 +110,4 @@ private:
};
#endif // COPY_ENGINE_2_H
#endif // COPY_ENGINE_H
+41
View File
@@ -0,0 +1,41 @@
/*
* Copyright 2008-2009, Stephan Aßmus <[email protected]>
* All rights reserved. Distributed under the terms of the MIT License.
*/
#ifndef _SEMAPHORE_LOCKER_H
#define _SEMAPHORE_LOCKER_H
#include "AutoLocker.h"
class SemaphoreLocking {
public:
inline bool Lock(sem_id* lockable)
{
return acquire_sem(*lockable) == B_OK;
}
inline void Unlock(sem_id* lockable)
{
release_sem(*lockable);
}
};
class SemaphoreLocker : public AutoLocker<sem_id, SemaphoreLocking> {
public:
inline SemaphoreLocker(sem_id semaphore, bool alreadyLocked = false,
bool lockIfNotLocked = true)
:
AutoLocker<sem_id, SemaphoreLocking>(),
fSem(semaphore)
{
SetTo(&fSem, alreadyLocked, lockIfNotLocked);
}
private:
sem_id fSem;
};
#endif // _SEMAPHORE_LOCKER_H