OpenWalnut  1.4.0
Public Types | Public Member Functions | Protected Attributes | List of all members
WSharedObject< T > Class Template Reference

Wrapper around an object/type for thread safe sharing of objects among multiple threads. More...

#include <WSharedObject.h>

+ Inheritance diagram for WSharedObject< T >:

Public Types

typedef T ValueT
 The type protected by this shared object class. More...
 
typedef boost::shared_ptr< WSharedObjectTicketRead< T > > ReadTicket
 Type for read tickets. More...
 
typedef boost::shared_ptr< WSharedObjectTicketWrite< T > > WriteTicket
 Type for write tickets. More...
 
typedef boost::shared_ptr< WSharedObject< T > > SPtr
 Shared pointer abbreviation. More...
 
typedef boost::shared_ptr< WSharedObject< T > > ConstSPtr
 Const shared ptr abbreviation. More...
 

Public Member Functions

 WSharedObject ()
 Default constructor. More...
 
virtual ~WSharedObject ()
 Destructor. More...
 
ReadTicket getReadTicket () const
 Returns a ticket to get read access to the contained data. More...
 
WriteTicket getWriteTicket (bool suppressNotify=false) const
 Returns a ticket to get write access to the contained data. More...
 
boost::shared_ptr< WConditiongetChangeCondition () const
 This condition fires whenever the encapsulated object changed. More...
 

Protected Attributes

m_object
 The object wrapped by this class. More...
 
boost::shared_ptr< boost::shared_mutex > m_lock
 The lock to ensure thread safe access. More...
 
boost::shared_ptr< WConditionm_changeCondition
 This condition set fires whenever the contained object changes. More...
 

Detailed Description

template<typename T>
class WSharedObject< T >

Wrapper around an object/type for thread safe sharing of objects among multiple threads.

The advantage of this class over WFlag is, that WFlag just protects simple get/set operations, while this class can protect a whole bunch of operations on the encapsulated object.

Definition at line 43 of file WSharedObject.h.

Member Typedef Documentation

template<typename T>
typedef boost::shared_ptr< WSharedObject< T > > WSharedObject< T >::ConstSPtr

Const shared ptr abbreviation.

Definition at line 79 of file WSharedObject.h.

template<typename T>
typedef boost::shared_ptr< WSharedObjectTicketRead< T > > WSharedObject< T >::ReadTicket

Type for read tickets.

Definition at line 64 of file WSharedObject.h.

template<typename T>
typedef boost::shared_ptr< WSharedObject< T > > WSharedObject< T >::SPtr

Shared pointer abbreviation.

Definition at line 74 of file WSharedObject.h.

template<typename T>
typedef T WSharedObject< T >::ValueT

The type protected by this shared object class.

Definition at line 59 of file WSharedObject.h.

template<typename T>
typedef boost::shared_ptr< WSharedObjectTicketWrite< T > > WSharedObject< T >::WriteTicket

Type for write tickets.

Definition at line 69 of file WSharedObject.h.

Constructor & Destructor Documentation

template<typename T >
WSharedObject< T >::WSharedObject ( )

Default constructor.

Definition at line 126 of file WSharedObject.h.

template<typename T >
WSharedObject< T >::~WSharedObject ( )
virtual

Destructor.

Definition at line 134 of file WSharedObject.h.

Member Function Documentation

template<typename T >
boost::shared_ptr< WCondition > WSharedObject< T >::getChangeCondition ( ) const

This condition fires whenever the encapsulated object changed.

This is fired automatically by endWrite().

Returns
the condition

Definition at line 140 of file WSharedObject.h.

Referenced by WGEColormapping::getChangeCondition(), WGEScreenCapture::getRecordCondition(), WGEColormapping::WGEColormapping(), and WPropertyGroupBase::WPropertyGroupBase().

template<typename T >
WSharedObject< T >::ReadTicket WSharedObject< T >::getReadTicket ( ) const

Returns a ticket to get read access to the contained data.

After the ticket is freed, the read lock vanishes.

Returns
the read ticket

Definition at line 146 of file WSharedObject.h.

Referenced by WLogger::addLogMessage(), WSharedSequenceContainer< S >::at(), WGEColormapping::callback(), WSharedAssociativeContainer< T >::count(), WSharedSequenceContainer< S >::count(), WModuleFactory::create(), WSharedAssociativeContainer< T >::empty(), WSharedSequenceContainer< S >::find(), WModuleFactory::findByUUID(), WPropertyGroupBase::findProperty(), WModuleFactory::getAllPrototypes(), WPropertyList< T >::getAsString(), WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getAsString(), WModuleFactory::getCompatiblePrototypes(), WBatchLoader::getDataModuleList(), WModuleContainer::getDataModules(), WSubject::getDatasets(), WModuleContainer::getModules(), WModuleContainer::getPossibleConnections(), WPropertyGroupBase::getProperties(), WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::getProperty(), WModuleFactory::getPrototypes(), WModuleFactory::getPrototypesByType(), WPropertyGroupBase::getReadTicket(), WGEColormapping::getReadTicket(), WGEScreenCapture::getRecordingInformation(), WWorkerThreadTest::FuncType::getResult(), WThreadedFunctionTest::FuncType::getResult(), WDataHandler::getSubjectByID(), WDataHandler::getSubjects(), WModuleFactory::isPrototypeAvailable(), WGEScreenCapture::isRecording(), WSharedAssociativeContainer< T >::max_size(), WSharedSequenceContainer< S >::operator[](), WGEShader::processShader(), WGEColormapping::resetSortIndices(), WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::set(), WPropertyStruct< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::setAsString(), WGEColormapping::setSortIndices(), WSharedAssociativeContainer< T >::size(), WSharedSequenceContainer< S >::size(), WThreadedFunctionBase::status(), WModuleContainer::stop(), WWorkerThreadTest::FuncType::stopped(), WThreadedFunctionTest::FuncType::stopped(), WThreadedTrackingFunctionTest::testCompute(), WThreadedFunctionTest::testExceptionHandling(), WGEColormapping::updateBounds(), WProjectFile::WProjectFile(), and WPropertyGroupBase::WPropertyGroupBase().

template<typename T >
WSharedObject< T >::WriteTicket WSharedObject< T >::getWriteTicket ( bool  suppressNotify = false) const

Returns a ticket to get write access to the contained data.

After the ticket is freed, the write lock vanishes.

Parameters
suppressNotifytrue if no notification should be send after unlocking.
Returns
the ticket

Definition at line 154 of file WSharedObject.h.

Referenced by WModuleContainer::add(), WPropertyGroupBase::addArbitraryProperty(), WGEShader::addPreprocessor(), WPropertyObserver::cancelSubscriptions(), WSharedAssociativeContainer< T >::clear(), WSharedSequenceContainer< S >::clear(), WDataHandler::clear(), WGEPostprocessingNode::clear(), WSubject::clear(), WPropertyGroup::clear(), WGEShader::clearPreprocessors(), WSharedAssociativeContainer< T >::erase(), WSharedSequenceContainer< S >::erase(), WWorkerThreadTest::FuncType::FuncType(), WThreadedFunctionTest::FuncType::FuncType(), WSubject::getDatasetsForWriting(), WPropertyObserver::handled(), WThreadedFunctionTest::handleException(), WThreadedFunction< Function_T >::handleThreadDone(), WThreadedFunction< Function_T >::handleThreadException(), WGEPostprocessingNode::insert(), WSharedAssociativeContainer< T >::insert(), WModuleFactory::load(), WGEColormapping::moveDown(), WGEColormapping::moveTo(), WGEColormapping::moveToBottom(), WGEColormapping::moveToTop(), WGEColormapping::moveUp(), WPropertyObserver::observe(), WWorkerThreadTest::FuncType::operator()(), WThreadedFunctionTest::FuncType::operator()(), WThreadedTrackingFunctionTest::pntVis(), WSharedSequenceContainer< S >::pop_back(), WPropertyObserver::propertyUpdated(), WSharedSequenceContainer< S >::push_back(), WSharedSequenceContainer< S >::push_front(), WGEScreenCapture::record(), WProjectFile::registerParser(), WGEPostprocessingNode::remove(), WModuleContainer::remove(), WSharedSequenceContainer< S >::remove(), WSubject::removeDataSet(), WGEShader::removePreprocessor(), WPropertyGroup::removeProperty(), WDataHandler::removeSubject(), WSharedSequenceContainer< S >::replace(), WWorkerThreadTest::FuncType::reset(), WThreadedFunctionTest::FuncType::reset(), WGEScreenCapture::resetFrameCounter(), WSharedSequenceContainer< S >::sort(), WSharedSequenceContainer< S >::stableSort(), WModuleContainer::stop(), WThreadedTrackingFunctionTest::testCompute(), WThreadedFunctionTest::testExceptionHandling(), WGEColormapping::textureUpdate(), WPropertyObserver::updateSubscriptions(), WGEScreenCapture::WGEScreenCapture(), WThreadedFunction< Function_T >::WThreadedFunction(), and WThreadedFunctionBase::WThreadedFunctionBase().

Member Data Documentation

template<typename T>
boost::shared_ptr< WCondition > WSharedObject< T >::m_changeCondition
protected

This condition set fires whenever the contained object changes.

This corresponds to the Observable pattern.

Definition at line 120 of file WSharedObject.h.

template<typename T>
boost::shared_ptr< boost::shared_mutex > WSharedObject< T >::m_lock
mutableprotected

The lock to ensure thread safe access.

This member is mutable as the getReadTicket and getWriteTicket functions are const but need a non-const reference to m_lock.

Definition at line 115 of file WSharedObject.h.

template<typename T>
T WSharedObject< T >::m_object
mutableprotected

The object wrapped by this class.

This member is mutable as the getReadTicket and getWriteTicket functions are const but need a non-const reference to m_object.

Definition at line 109 of file WSharedObject.h.


The documentation for this class was generated from the following file: