OpenWalnut  1.2.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | Protected Attributes
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 >:

List of all members.

Public Types

typedef boost::shared_ptr
< WSharedObjectTicketRead< T > > 
ReadTicket
 Type for read tickets.
typedef boost::shared_ptr
< WSharedObjectTicketWrite< T > > 
WriteTicket
 Type for write tickets.

Public Member Functions

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

Protected Attributes

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

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 41 of file WSharedObject.h.


Member Typedef Documentation

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

Type for read tickets.

Definition at line 58 of file WSharedObject.h.

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

Type for write tickets.

Definition at line 63 of file WSharedObject.h.


Constructor & Destructor Documentation

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

Default constructor.

Definition at line 111 of file WSharedObject.h.

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

Destructor.

Definition at line 119 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 125 of file WSharedObject.h.

Referenced by WGEColormapping::getChangeCondition(), WGEColormapping::WGEColormapping(), and WProperties::WProperties().

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 131 of file WSharedObject.h.

Referenced by WLogger::addLogMessage(), WSharedSequenceContainer< S >::at(), WGEGridNode::callback(), WGEColormapping::callback(), WSharedAssociativeContainer< T >::count(), WSharedSequenceContainer< S >::count(), WModuleFactory::create(), WSharedAssociativeContainer< T >::empty(), WSharedSequenceContainer< S >::find(), WProperties::findProperty(), WGEColormapping::getBoundingBox(), WModuleFactory::getCompatiblePrototypes(), WModuleContainer::getDataModules(), WSubject::getDatasets(), WGEGridNode::getGrid(), WModuleContainer::getModules(), WModuleContainer::getPossibleConnections(), WProperties::getProperties(), WModuleFactory::getPrototypes(), WModuleFactory::getPrototypesByType(), WProperties::getReadTicket(), WGEColormapping::getReadTicket(), WWorkerThreadTest::FuncType::getResult(), WThreadedFunctionTest::FuncType::getResult(), WDataHandler::getSubjectByID(), WDataHandler::getSubjects(), WModuleFactory::isPrototypeAvailable(), WModuleFactory::load(), WSharedAssociativeContainer< T >::max_size(), WSharedSequenceContainer< S >::operator[](), WGEShader::processShader(), WGEShader::setDefine(), WSharedAssociativeContainer< T >::size(), WSharedSequenceContainer< S >::size(), WThreadedFunctionBase::status(), WModuleContainer::stop(), WWorkerThreadTest::FuncType::stopped(), WThreadedFunctionTest::FuncType::stopped(), WThreadedTrackingFunctionTest::testCompute(), WThreadedFunctionTest::testExceptionHandling(), WGEColormapping::updateBounds(), and WProperties::WProperties().

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 139 of file WSharedObject.h.

Referenced by WModuleContainer::add(), WGEShader::addPreprocessor(), WProperties::addProperty(), WPropertyObserver::cancelSubscriptions(), WSharedAssociativeContainer< T >::clear(), WSharedSequenceContainer< S >::clear(), WDataHandler::clear(), WGEPostprocessingNode::clear(), WSubject::clear(), WProperties::clear(), WGEShader::clearPreprocessors(), WSharedAssociativeContainer< T >::erase(), WSharedSequenceContainer< S >::erase(), WWorkerThreadTest::FuncType::FuncType(), WThreadedFunctionTest::FuncType::FuncType(), WSubject::getDatasetsForWriting(), wtracking::WThreadedTrackingFunction::getJob(), WPropertyObserver::handled(), WThreadedFunctionTest::handleException(), WThreadedFunction< Function_T >::handleThreadDone(), WThreadedFunction< Function_T >::handleThreadException(), WGEPostprocessingNode::insert(), WSharedAssociativeContainer< T >::insert(), WModuleFactory::load(), WGEColormapping::moveDown(), 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(), WGEPostprocessingNode::remove(), WModuleContainer::remove(), WSharedSequenceContainer< S >::remove(), WSubject::removeDataSet(), WGEShader::removePreprocessor(), WProperties::removeProperty(), WDataHandler::removeSubject(), WSharedSequenceContainer< S >::replace(), WWorkerThreadTest::FuncType::reset(), WThreadedFunctionTest::FuncType::reset(), WGEGridNode::setGrid(), WSharedSequenceContainer< S >::sort(), WModuleContainer::stop(), WThreadedTrackingFunctionTest::testCompute(), WThreadedFunctionTest::testExceptionHandling(), WGEColormapping::textureUpdate(), WGEColormapping::updateBounds(), WPropertyObserver::updateSubscriptions(), WGEColormapping::WGEColormapping(), WGEGridNode::WGEGridNode(), WThreadedFunction< Function_T >::WThreadedFunction(), WThreadedFunctionBase::WThreadedFunctionBase(), and wtracking::WThreadedTrackingFunction::WThreadedTrackingFunction().


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 105 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 100 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 94 of file WSharedObject.h.


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