OpenDDS  Snapshot(2023/04/07-19:43)
Public Member Functions | Private Attributes | List of all members
OpenDDS::DCPS::WeakObject Class Reference

#include <RcObject.h>

Inheritance diagram for OpenDDS::DCPS::WeakObject:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::WeakObject:
Collaboration graph
[legend]

Public Member Functions

 WeakObject (RcObject *ptr)
 
void _add_ref ()
 
void _remove_ref ()
 
RcObjectlock ()
 
bool check_expire (Atomic< long > &count)
 

Private Attributes

ACE_SYNCH_MUTEX mx_
 
RcObjectptr_
 
long ref_count_
 

Detailed Description

Definition at line 26 of file RcObject.h.

Constructor & Destructor Documentation

◆ WeakObject()

OpenDDS::DCPS::WeakObject::WeakObject ( RcObject ptr)
inline

Definition at line 30 of file RcObject.h.

31  : ptr_(ptr)
32  , ref_count_(1)
33  {
34  }

Member Function Documentation

◆ _add_ref()

void OpenDDS::DCPS::WeakObject::_add_ref ( void  )
inline

Definition at line 36 of file RcObject.h.

Referenced by OpenDDS::DCPS::RcObject::_get_weak_object().

37  {
39  ++ref_count_;
40  }
ACE_SYNCH_MUTEX mx_
Definition: RcObject.h:56

◆ _remove_ref()

void OpenDDS::DCPS::WeakObject::_remove_ref ( void  )
inline

Definition at line 42 of file RcObject.h.

References ACE_Guard< ACE_LOCK >::release().

43  {
45  const long new_count = --ref_count_;
46  if (new_count == 0) {
47  guard.release();
48  delete this;
49  }
50  }
ACE_SYNCH_MUTEX mx_
Definition: RcObject.h:56

◆ check_expire()

bool OpenDDS::DCPS::WeakObject::check_expire ( Atomic< long > &  count)
inline

Definition at line 115 of file RcObject.h.

116  {
118  const long new_count = --count;
119  if (new_count == 0 && ptr_) {
120  ptr_ = 0;
121  return true;
122  }
123  return false;
124  }
ACE_SYNCH_MUTEX mx_
Definition: RcObject.h:56

◆ lock()

RcObject * OpenDDS::DCPS::WeakObject::lock ( void  )
inline

Definition at line 106 of file RcObject.h.

107  {
109  if (ptr_) {
110  ptr_->_add_ref();
111  }
112  return ptr_;
113  }
virtual void _add_ref()
Definition: RcObject.h:69
ACE_SYNCH_MUTEX mx_
Definition: RcObject.h:56

Member Data Documentation

◆ mx_

ACE_SYNCH_MUTEX OpenDDS::DCPS::WeakObject::mx_
mutableprivate

Definition at line 56 of file RcObject.h.

◆ ptr_

RcObject* OpenDDS::DCPS::WeakObject::ptr_
private

Definition at line 57 of file RcObject.h.

◆ ref_count_

long OpenDDS::DCPS::WeakObject::ref_count_
private

Definition at line 58 of file RcObject.h.


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