proxygen
folly::RWSpinLock::UpgradedHolder Class Reference

#include <RWSpinLock.h>

Public Member Functions

 UpgradedHolder (RWSpinLock *lock)
 
 UpgradedHolder (RWSpinLock &lock)
 
 UpgradedHolder (WriteHolder &&writer)
 
 UpgradedHolder (UpgradedHolder &&other) noexcept
 
UpgradedHolderoperator= (UpgradedHolder &&other)
 
 UpgradedHolder (const UpgradedHolder &other)=delete
 
UpgradedHolderoperator= (const UpgradedHolder &other)=delete
 
 ~UpgradedHolder ()
 
void reset (RWSpinLock *lock=nullptr)
 
void swap (UpgradedHolder *other)
 

Private Attributes

RWSpinLocklock_
 

Friends

class WriteHolder
 
class ReadHolder
 

Detailed Description

Definition at line 383 of file RWSpinLock.h.

Constructor & Destructor Documentation

folly::RWSpinLock::UpgradedHolder::UpgradedHolder ( RWSpinLock lock)
inlineexplicit

Definition at line 385 of file RWSpinLock.h.

References folly::RWSpinLock::ReadHolder::lock_, and folly::RWSpinLock::lock_upgrade().

385  : lock_(lock) {
386  if (lock_) {
387  lock_->lock_upgrade();
388  }
389  }
folly::RWSpinLock::UpgradedHolder::UpgradedHolder ( RWSpinLock lock)
inlineexplicit

Definition at line 391 of file RWSpinLock.h.

References folly::RWSpinLock::ReadHolder::lock_, and folly::RWSpinLock::lock_upgrade().

391  : lock_(&lock) {
392  lock_->lock_upgrade();
393  }
folly::RWSpinLock::UpgradedHolder::UpgradedHolder ( WriteHolder &&  writer)
inlineexplicit

Definition at line 395 of file RWSpinLock.h.

References folly::RWSpinLock::ReadHolder::lock_, and folly::RWSpinLock::unlock_and_lock_upgrade().

395  {
396  lock_ = writer.lock_;
397  writer.lock_ = nullptr;
398  if (lock_) {
400  }
401  }
void unlock_and_lock_upgrade()
Definition: RWSpinLock.h:256
folly::RWSpinLock::UpgradedHolder::UpgradedHolder ( UpgradedHolder &&  other)
inlinenoexcept

Definition at line 403 of file RWSpinLock.h.

403  : lock_(other.lock_) {
404  other.lock_ = nullptr;
405  }
folly::RWSpinLock::UpgradedHolder::UpgradedHolder ( const UpgradedHolder other)
delete
folly::RWSpinLock::UpgradedHolder::~UpgradedHolder ( )
inline

Definition at line 416 of file RWSpinLock.h.

References folly::RWSpinLock::ReadHolder::lock_, and folly::RWSpinLock::unlock_upgrade().

416  {
417  if (lock_) {
419  }
420  }
void unlock_upgrade()
Definition: RWSpinLock.h:236

Member Function Documentation

UpgradedHolder& folly::RWSpinLock::UpgradedHolder::operator= ( UpgradedHolder &&  other)
inline

Definition at line 407 of file RWSpinLock.h.

References folly::RWSpinLock::ReadHolder::lock_, folly::RWSpinLock::ReadHolder::operator=(), folly::RWSpinLock::ReadHolder::swap(), folly::f14::swap(), and folly::RWSpinLock::ReadHolder::UpgradedHolder.

407  {
408  using std::swap;
409  swap(lock_, other.lock_);
410  return *this;
411  }
void swap(UpgradedHolder *other)
Definition: RWSpinLock.h:435
void swap(SwapTrackingAlloc< T > &, SwapTrackingAlloc< T > &)
Definition: F14TestUtil.h:414
UpgradedHolder& folly::RWSpinLock::UpgradedHolder::operator= ( const UpgradedHolder other)
delete
void folly::RWSpinLock::UpgradedHolder::reset ( RWSpinLock lock = nullptr)
inline

Definition at line 422 of file RWSpinLock.h.

References folly::RWSpinLock::lock(), folly::RWSpinLock::ReadHolder::lock_, folly::RWSpinLock::lock_upgrade(), and folly::RWSpinLock::unlock_upgrade().

422  {
423  if (lock == lock_) {
424  return;
425  }
426  if (lock_) {
428  }
429  lock_ = lock;
430  if (lock_) {
431  lock_->lock_upgrade();
432  }
433  }
void unlock_upgrade()
Definition: RWSpinLock.h:236
void folly::RWSpinLock::UpgradedHolder::swap ( UpgradedHolder other)
inline

Definition at line 435 of file RWSpinLock.h.

References folly::RWSpinLock::ReadHolder::lock_, lock_, folly::RWSpinLock::ReadHolder::swap(), and folly::f14::swap().

435  {
436  using std::swap;
437  swap(lock_, other->lock_);
438  }
void swap(UpgradedHolder *other)
Definition: RWSpinLock.h:435
void swap(SwapTrackingAlloc< T > &, SwapTrackingAlloc< T > &)
Definition: F14TestUtil.h:414

Friends And Related Function Documentation

friend class ReadHolder
friend

Definition at line 442 of file RWSpinLock.h.

friend class WriteHolder
friend

Definition at line 441 of file RWSpinLock.h.

Member Data Documentation

RWSpinLock* folly::RWSpinLock::UpgradedHolder::lock_
private

Definition at line 443 of file RWSpinLock.h.

Referenced by swap().


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