OpenLibrary
Public Member Functions | Friends | List of all members
ol::ThreadSafeResource< T >::Accessor Struct Reference

ThreadSafeResource's helper class. More...

#include <ts_resource.hpp>

Public Member Functions

 Accessor (std::mutex &mutex, T *object)
 
 Accessor (Accessor &&other)
 Move Constructor.
 
 Accessor ()
 
 Accessor (std::unique_lock< std::mutex > &&lock, T *object)
 Constructor.
 
 Accessor (const Accessor &)=delete
 
Accessoroperator= (const Accessor &)=delete
 
Accessoroperator= (Accessor &&other)
 Move operator.
 
virtual ~Accessor ()
 Destructor. More...
 
T & get ()
 get reference to resource
 
const T & get () const
 get reference to const resource
 
T * operator-> ()
 get pointer to resource
 
const T * operator-> () const
 get pointer to const resource
 
T & operator* ()
 get reference to resource
 
const T & operator* () const
 get reference to const resource
 
bool is_valid () const
 Check if Accessor is valid. More...
 

Friends

class ThreadSafeResource
 

Detailed Description

template<typename T>
struct ol::ThreadSafeResource< T >::Accessor

ThreadSafeResource's helper class.

Accessor is used by ThreadSafeResource for giving exclusive access to resource. Resource is normally being kept in ThreadSafeResource object. When ThreadSafeResource::lock() is called an Accessor object is returned with exclusive access to resource. As long as Accessor is alive, resource cannot be accessed by other threads.

Constructor & Destructor Documentation

template<typename T >
ol::ThreadSafeResource< T >::Accessor::Accessor ( std::mutex &  mutex,
T *  object 
)
inline

Constructor Constructs an Accessor which is temporary owner of locked resource. Until Accessor is destructed resource is locked and can be accessed safely by Accessor's client

template<typename T >
ol::ThreadSafeResource< T >::Accessor::Accessor ( )
inline

Constructor Constructs an invalid Accessor. is_valid() will return false.

template<typename T >
virtual ol::ThreadSafeResource< T >::Accessor::~Accessor ( )
inlinevirtual

Destructor.

After destruction of Accessor resource is again available to other threads. If INotify object was used with ThreadSafeResource::lock(INotify *), unlock() will be called on it

Member Function Documentation

template<typename T >
bool ol::ThreadSafeResource< T >::Accessor::is_valid ( ) const
inline

Check if Accessor is valid.

Returns true when Accessor holds resource. Otherwise returns false. Only default constructor Accessor() makes it invalid. All other constructors will create a valid Accessor object.


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