1 #ifndef OPENDDS_DCPS_RCOBJECT_H 2 #define OPENDDS_DCPS_RCOBJECT_H 4 #if !defined (ACE_LACKS_PRAGMA_ONCE) 45 const long new_count = --ref_count_;
66 weak_object_->_remove_ref();
76 if (weak_object_->check_expire(ref_count_)) {
118 const long new_count = --count;
119 if (new_count == 0 && ptr_) {
126 template <
typename T>
137 : weak_object_(obj._get_weak_object())
138 , cached_(const_cast<T*>(&obj))
143 : weak_object_(rch.in() ? rch.in()->_get_weak_object() : 0)
149 : weak_object_(other.weak_object_)
150 , cached_(other.cached_)
153 weak_object_->_add_ref();
160 weak_object_->_remove_ref();
190 if (weak_object_ && weak_object_->lock()) {
211 operator bool()
const 219 weak_object_->_remove_ref();
229 , cached_(dynamic_cast<T*>(obj))
void swap(MessageBlock &lhs, MessageBlock &rhs)
WeakRcHandle(const RcHandle< T > &rch)
WeakRcHandle & operator=(const WeakRcHandle &other)
#define OpenDDS_Dcps_Export
bool check_expire(Atomic< long > &count)
WeakRcHandle(const WeakRcHandle &other)
bool operator!=(const WeakRcHandle &rhs) const
WeakObject * weak_object_
bool operator<(const WeakRcHandle &rhs) const
virtual void _remove_ref()
WeakRcHandle(const T &obj)
WeakObject * weak_object_
WeakRcHandle(WeakObject *obj)
#define OPENDDS_END_VERSIONED_NAMESPACE_DECL
WeakObject(RcObject *ptr)
WeakObject * _get_weak_object() const
bool operator==(const WeakRcHandle &rhs) const
RcHandle< T > lock() const
Atomic< long > ref_count_
WeakRcHandle & operator=(const RcHandle< T > &other)
The Internal API and Implementation of OpenDDS.
WeakRcHandle & operator=(const T &obj)