GlobalObjects
Lade ...
Suche ...
Keine Treffer
glo::LockManager::LockedObject Klassenreferenz

Objekte können gesperrt werden. Objekte dieser Klasse repräsentiert ein vom Kommunikatoren gesperrtes Objekt, mit ggf. mit gesperrten Objekten wie z.B. eingebettete Objekte. Mehr ...

#include <GloLockManager.h>

Klassen

class  CommunicatorRightsRestrictions
 Die einzelnen Sperrmodi des Objekts mit Objekt-ID aus LockedObject::m_LockObjektID für einen Kommunikator. Mehr ...
 

Öffentliche Methoden

 LockedObject (const ObjID &rLockObjekt)
 
 ~LockedObject ()
 
void deleteCommunicator (Communicator *pCommunicator)
 
std::size_t getNumCommunicators ()
 
ObjID getObjID () const
 
bool hasAnyOtherCompetingProtection (Communicator *pCommunicator, EnLockMode eLockMode) const
 
bool isPossible (Communicator *pCommunicator, bool bRead, bool bWrite, bool bDelete) const
 
int lockObject (Communicator *pCommunicator, std::stack< ObjID > *pDependObjIdStack, EnLockMode eLockMode, EnDeepMode eDeepMode, bool bSimulate=false)
 
int unlockObject (Communicator *pCommunicator, std::stack< ObjID > *&prDependObjIdStack, EnLockMode eLockMode, EnDeepMode eDeepMode, bool bSimulate=false)
 

Geschützte Methoden

 LockedObject ()
 

Geschützte Attribute

std::map< NUM_PTR, CommunicatorRightsRestrictions *, std::less< NUM_PTR > > m_CommunicatorMap
 
ObjID m_LockObjektID
 

Private Methoden

 LockedObject (const LockedObject &)
 
LockManager::LockedObjectoperator= (LockedObject &)
 
int setLockCount (std::list< DependentObjsWithDeepMode * > &rLockCountList, std::stack< ObjID > *&prUnlockDependObjIdStack, std::stack< ObjID > *pLockDependObjIdStack, EnDeepMode eDeepMode, bool bSimulate=false)
 
int setLocks (CommunicatorRightsRestrictions *pItem, EnLockMode eLockMode, EnDeepMode eDeepMode, std::stack< ObjID > *&prUnlockDependObjIdStack, std::stack< ObjID > *pLockDependObjIdStack, bool bSimulate=false)
 

Freundbeziehungen

class LockManager
 

Ausführliche Beschreibung

Objekte können gesperrt werden. Objekte dieser Klasse repräsentiert ein vom Kommunikatoren gesperrtes Objekt, mit ggf. mit gesperrten Objekten wie z.B. eingebettete Objekte.

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ LockedObject() [1/3]

glo::LockManager::LockedObject::LockedObject ( )
protected

Der Standard-Konstruktor steht nicht zur Verfügung.

◆ LockedObject() [2/3]

glo::LockManager::LockedObject::LockedObject ( const ObjID & rLockObjekt)

Konstruktor mit Parameterübergabe.

Parameter
[in]rLockObjektDie Objekt-ID des zu sperrende Objekts.

◆ ~LockedObject()

glo::LockManager::LockedObject::~LockedObject ( )

Destruktor.

◆ LockedObject() [3/3]

glo::LockManager::LockedObject::LockedObject ( const LockedObject & )
private

Der Copy-Konstruktor steht nicht zur Verfügung.

Dokumentation der Elementfunktionen

◆ deleteCommunicator()

void glo::LockManager::LockedObject::deleteCommunicator ( Communicator * pCommunicator)

Hebt alle Sperren des übergebenen Kommunikators auf.

Parameter
[in]pCommunicatorDer Kommunikator.

◆ getNumCommunicators()

std::size_t glo::LockManager::LockedObject::getNumCommunicators ( )

Liefert die Anzahl der Kommunikatoren, welche das Objekt mit der Objekt-ID aus LockedObject::m_LockObjektID gesperrt haben.

Rückgabe
Die Anzahl der sperrenden Kommunikatoren.

◆ getObjID()

ObjID glo::LockManager::LockedObject::getObjID ( ) const

Liefert die Objekt-ID des gesperrten Objektes.

Rückgabe
Die Objekt-ID.

◆ hasAnyOtherCompetingProtection()

bool glo::LockManager::LockedObject::hasAnyOtherCompetingProtection ( Communicator * pCommunicator,
EnLockMode eLockMode ) const

Prüft, ob es eine konkurierende Sperre des Objekts mit Objekt-ID aus LockedObject::m_LockObjektID für den übergebenen Kommunikator gibt.

Parameter
[in]pCommunicatorDer Kommunikator.
[in]eLockModeDer Sperrmodus, welcher für den Kommunikator geprüft werden soll.
Rückgabe
Wenn true, gibt es eine konkurierende Sperre. Das Objekt mit der Objekt-ID aus LockedObject::m_LockObjektID kann nicht vom übergebenen Kommunikator mit dem übergebenen Sperrmodus gesperrt werden.

◆ isPossible()

bool glo::LockManager::LockedObject::isPossible ( Communicator * pCommunicator,
bool bRead,
bool bWrite,
bool bDelete ) const

Prüft, ob der übergebenen Kommunikator das Objekt mit Objekt-ID aus LockedObject::m_LockObjektID lesen, schreiben und/oder löschen darf.

Parameter
[in]pCommunicatorDer Kommunikator.
[in]bReadWenn true, wird auf 'lesen' geprüft.
[in]bWriteWenn true, wird auf 'schreiben' geprüft.
[in]bDeleteWenn true, wird auf 'löschen' geprüft.
Rückgabe
Wenn true, ist bzw. sind die true gesetzten Modi für den Kommunikator möglich.

◆ lockObject()

int glo::LockManager::LockedObject::lockObject ( Communicator * pCommunicator,
std::stack< ObjID > * pDependObjIdStack,
EnLockMode eLockMode,
EnDeepMode eDeepMode,
bool bSimulate = false )

Sperrt das Objekt mit Objekt-ID aus LockedObject::m_LockObjektID für einen Kommunikator.

Parameter
[in]pCommunicatorDer sperrende Kommunikator.
[in]pDependObjIdStackDer Stack von Objekt-IDs der mitzusperrenden Objekte.
[in]eLockModeDer Sperrmodus.
[in]eDeepModeDer Sperrtiefenmodus.
[in]bSimulateWenn true, wird nur simuliert, also kein Wert gesetzt, aber ein valides Ergebnis bzw. Fehler geliefert.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ operator=()

LockManager::LockedObject & glo::LockManager::LockedObject::operator= ( LockedObject & )
private

Der Zuweisungsoperator ist nicht verfügbar.

◆ setLockCount()

int glo::LockManager::LockedObject::setLockCount ( std::list< DependentObjsWithDeepMode * > & rLockCountList,
std::stack< ObjID > *& prUnlockDependObjIdStack,
std::stack< ObjID > * pLockDependObjIdStack,
EnDeepMode eDeepMode,
bool bSimulate = false )
private

Hilfsmethode für LockedObject::setLocks (...).

Parameter
[in,out]rLockCountListDie Liste für jeden Sperrmodus aus CommunicatorRightsRestrictions
[in,out]prUnlockDependObjIdStackDer Stack von Objekt-IDs der mitfreizugebender Objekte.
[in]pLockDependObjIdStackDer Stack von Objekt-IDs der mitzusperrenden Objekte.
[in]eDeepModeDer Sperrtiefenmodus.
[in]bSimulateWenn true, wird nur simuliert, also kein Wert gesetzt, aber ein valides Ergebnis bzw. ein Fehler geliefert.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ setLocks()

int glo::LockManager::LockedObject::setLocks ( CommunicatorRightsRestrictions * pItem,
EnLockMode eLockMode,
EnDeepMode eDeepMode,
std::stack< ObjID > *& prUnlockDependObjIdStack,
std::stack< ObjID > * pLockDependObjIdStack,
bool bSimulate = false )
private

Sperrt das Objekt mit Objekt-ID aus LockedObject::m_LockObjektID für ein CommunicatorRightsRestrictions bzw. gibt es frei.

Parameter
[in]pItemDie CommunicatorRightsRestrictions in welcher die Sperre bzw. Freigabe eingetragen wird.
[in]eLockModeDer Sperrmodus.
[in]eDeepModeDer Sperrtiefenmodus.
[in,out]prUnlockDependObjIdStackDer Stack von Objekt-IDs der mitfreizugebenden Objekte.
[in]pLockDependObjIdStackDer Stack von Objekt-IDs der mitzusperrenden Objekte.
[in]bSimulateWenn true, wird nur simuliert, also kein Wert gesetzt, aber ein valides Ergebnis bzw. ein Fehler geliefert.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ unlockObject()

int glo::LockManager::LockedObject::unlockObject ( Communicator * pCommunicator,
std::stack< ObjID > *& prDependObjIdStack,
EnLockMode eLockMode,
EnDeepMode eDeepMode,
bool bSimulate = false )

Gibt das von einem Kommunikator gesperrte Objekt mit Objekt-ID aus LockedObject::m_LockObjektID frei.

Parameter
[in]pCommunicatorDer freigebende Kommunikator.
[in,out]prDependObjIdStackDer Stack von Objekt-IDs der mit frei zu gebenden Objekte.
[in]eLockModeDer ursprüngliche Sperrmodus, welcher aufgehoben werden soll.
[in]eDeepModeDer Sperrtiefenmodus des ursprüngliche Sperrmodus, welcher aufgehoben werden soll.
[in]bSimulateWenn true, wird nur simuliert, also kein Wert gesetzt, aber ein valides Ergebnis bzw. Fehler geliefert.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

Freundbeziehungen und Funktionsdokumentation

◆ LockManager

friend class LockManager
friend

Dokumentation der Datenelemente

◆ m_CommunicatorMap

std::map< NUM_PTR, CommunicatorRightsRestrictions *, std::less<NUM_PTR> > glo::LockManager::LockedObject::m_CommunicatorMap
protected

Die einzelnen Sperrmodi der Kommunikatoren, welche das Objekt mit der Objekt-ID aus LockedObject::m_LockObjektID sperren.
Index ist die auf NUM_PTR gecastete Adresse des Communicator aus CommunicatorRightsRestrictions::m_pCommunicator

◆ m_LockObjektID

ObjID glo::LockManager::LockedObject::m_LockObjektID
protected

Die Objekt-ID des gesperrten Objektes.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: