Psyllid  v1.12.4
Project 8 Data Acquisisition Software
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
locked_resource< x_resource, x_parent, x_mutex, x_lock > Class Template Reference

#include <locked_resource.hh>

Inheritance diagram for locked_resource< x_resource, x_parent, x_mutex, x_lock >:
Inheritance graph

Public Types

typedef std::shared_ptr< x_resource > resource_ptr_t
 
typedef x_resource resource_t
 

Public Member Functions

 locked_resource ()
 
 locked_resource (locked_resource &&a_orig)
 
virtual ~locked_resource ()
 
locked_resourceoperator= (locked_resource &&a_rhs)
 
resource_toperator-> () const
 
bool have_lock () const
 
void unlock ()
 

Private Member Functions

 locked_resource (resource_ptr_t a_resource, x_mutex &a_mutex)
 
 locked_resource (const locked_resource &)=delete
 
locked_resourceoperator= (const locked_resource &)=delete
 

Private Attributes

friend x_parent
 
resource_ptr_t f_resource
 
x_lock f_lock
 
std::atomic< bool > f_have_lock
 

Detailed Description

template<class x_resource, class x_parent, class x_mutex = std::mutex, class x_lock = std::unique_lock< x_mutex >>
class psyllid::locked_resource< x_resource, x_parent, x_mutex, x_lock >

Definition at line 19 of file locked_resource.hh.

Member Typedef Documentation

◆ resource_ptr_t

typedef std::shared_ptr< x_resource > resource_ptr_t

Definition at line 22 of file locked_resource.hh.

◆ resource_t

typedef x_resource resource_t

Definition at line 23 of file locked_resource.hh.

Constructor & Destructor Documentation

◆ locked_resource() [1/4]

Definition at line 50 of file locked_resource.hh.

◆ locked_resource() [2/4]

locked_resource ( locked_resource< x_resource, x_parent, x_mutex, x_lock > &&  a_orig)

Definition at line 57 of file locked_resource.hh.

◆ ~locked_resource()

~locked_resource ( )
virtual

Definition at line 75 of file locked_resource.hh.

◆ locked_resource() [3/4]

locked_resource ( resource_ptr_t  a_resource,
x_mutex &  a_mutex 
)
private

Definition at line 68 of file locked_resource.hh.

◆ locked_resource() [4/4]

locked_resource ( const locked_resource< x_resource, x_parent, x_mutex, x_lock > &  )
privatedelete

Member Function Documentation

◆ have_lock()

bool have_lock ( ) const

Definition at line 97 of file locked_resource.hh.

◆ operator->()

locked_resource< x_resource, x_parent, x_mutex, x_lock >::resource_t * operator-> ( ) const

Definition at line 91 of file locked_resource.hh.

◆ operator=() [1/2]

locked_resource< x_resource, x_parent, x_mutex, x_lock > & operator= ( locked_resource< x_resource, x_parent, x_mutex, x_lock > &&  a_rhs)

Definition at line 79 of file locked_resource.hh.

◆ operator=() [2/2]

locked_resource& operator= ( const locked_resource< x_resource, x_parent, x_mutex, x_lock > &  )
privatedelete

◆ unlock()

void unlock ( )

Definition at line 103 of file locked_resource.hh.

Member Data Documentation

◆ f_have_lock

std::atomic< bool > f_have_lock
private

Definition at line 46 of file locked_resource.hh.

◆ f_lock

x_lock f_lock
private

Definition at line 45 of file locked_resource.hh.

◆ f_resource

resource_ptr_t f_resource
private

Definition at line 44 of file locked_resource.hh.

◆ x_parent

friend x_parent
private

Definition at line 38 of file locked_resource.hh.


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