rllib  1
Public Member Functions | Private Attributes | List of all members
rlSharedMemory::LockUserAddr Class Reference

#include <rlsharedmemory.h>

Collaboration diagram for rlSharedMemory::LockUserAddr:
Collaboration graph
[legend]

Public Member Functions

 LockUserAddr (rlSharedMemory *lockTarget, bool syncOnUnlock=false)
 
 LockUserAddr (const LockUserAddr &)=delete
 
 LockUserAddr (LockUserAddr &&)
 
 ~LockUserAddr ()
 
LockUserAddroperator= (const LockUserAddr &)=delete
 
LockUserAddroperator= (LockUserAddr &&)
 

Private Attributes

rlSharedMemorytarget
 
bool unlockWithSync
 

Detailed Description

Definition at line 56 of file rlsharedmemory.h.

Constructor & Destructor Documentation

◆ LockUserAddr() [1/3]

rlSharedMemory::LockUserAddr::LockUserAddr ( rlSharedMemory lockTarget,
bool  syncOnUnlock = false 
)
explicit

Definition at line 562 of file rlsharedmemory.cpp.

563 : target(lockTarget), unlockWithSync(syncOnUnlock)
564 {
565  if (target)
566  {
567 #ifdef RLWIN32
568  LockFileEx(target->hSharedFile, LOCKFILE_EXCLUSIVE_LOCK, 0, target->_size,0, &target->overlapped); // Changed by FMakkinga 18-03-2013
569 #elif defined(RLUNIX)
570  flock(target->fdlock, LOCK_EX);
571 #else
572  mylock(target->mutex, 1);
573 #endif
574  }
575 }
unsigned long _size
pthread_mutex_t * mutex
OVERLAPPED overlapped

◆ LockUserAddr() [2/3]

rlSharedMemory::LockUserAddr::LockUserAddr ( const LockUserAddr )
delete

◆ LockUserAddr() [3/3]

rlSharedMemory::LockUserAddr::LockUserAddr ( LockUserAddr &&  other)

Definition at line 577 of file rlsharedmemory.cpp.

578 : target(nullptr), unlockWithSync(false)
579 {
580  std::swap(this->target, other.target);
581  std::swap(this->unlockWithSync, other.unlockWithSync);
582 }

◆ ~LockUserAddr()

rlSharedMemory::LockUserAddr::~LockUserAddr ( )

Definition at line 584 of file rlsharedmemory.cpp.

585 {
586  if (target)
587  {
588 #ifdef RLWIN32
589  UnlockFileEx(target->hSharedFile, 0, target->_size, 0, &target->overlapped); // Changed by FMakkinga 18-03-2013
590 #elif defined(RLUNIX)
591  flock(target->fdlock, LOCK_UN);
592  if (unlockWithSync)
593  msync(target->base_adr, target->_size, MS_SYNC);
594 #else
595  myunlock(target->mutex);
596 #endif
597  target = nullptr;
598  unlockWithSync = false;
599  }
600 }
unsigned long _size
pthread_mutex_t * mutex
OVERLAPPED overlapped

Member Function Documentation

◆ operator=() [1/2]

LockUserAddr& rlSharedMemory::LockUserAddr::operator= ( const LockUserAddr )
delete

◆ operator=() [2/2]

auto rlSharedMemory::LockUserAddr::operator= ( LockUserAddr &&  other)

Definition at line 602 of file rlsharedmemory.cpp.

603 {
604  if (this->target)
605  this->~LockUserAddr();
606 
607  std::swap(this->target, other.target);
608  std::swap(this->unlockWithSync, other.unlockWithSync);
609 
610  return *this;
611 }

Member Data Documentation

◆ target

rlSharedMemory* rlSharedMemory::LockUserAddr::target
private

Definition at line 68 of file rlsharedmemory.h.

◆ unlockWithSync

bool rlSharedMemory::LockUserAddr::unlockWithSync
private

Definition at line 69 of file rlsharedmemory.h.


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