Alexandria 2.31.0
SDC-CH common library for the Euclid project
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes | List of all members
Euclid::FilePool::FileWriteAccessor< TFD > Class Template Reference

#include <FileAccessor.h>

Inheritance diagram for Euclid::FilePool::FileWriteAccessor< TFD >:
Inheritance graph
[legend]
Collaboration diagram for Euclid::FilePool::FileWriteAccessor< TFD >:
Collaboration graph
[legend]

Public Types

typedef FileAccessor< TFD > Base_
 
using ReleaseDescriptorCallback = typename Base_::ReleaseDescriptorCallback
 
using SharedLock = typename Base_::SharedLock
 
using UniqueLock = typename Base_::UniqueLock
 
- Public Types inherited from Euclid::FilePool::FileAccessor< TFD >
using ReleaseDescriptorCallback = std::function< void(TFD &&)>
 
- Public Types inherited from Euclid::FilePool::FileAccessorBase
using SharedMutex = boost::shared_mutex
 
using SharedLock = boost::shared_lock< SharedMutex >
 
using UniqueLock = boost::unique_lock< SharedMutex >
 
using UpgradeLock = boost::upgrade_lock< SharedMutex >
 
using UpgradeToUniqueLock = boost::upgrade_to_unique_lock< SharedMutex >
 

Public Member Functions

 FileWriteAccessor (TFD &&fd, ReleaseDescriptorCallback release_callback, UniqueLock lock)
 
virtual ~FileWriteAccessor ()
 Destructor.
 
bool isReadOnly () const final
 
- Public Member Functions inherited from Euclid::FilePool::FileAccessor< TFD >
virtual ~FileAccessor ()=default
 Destructor.
 
- Public Member Functions inherited from Euclid::FilePool::FileAccessorBase
virtual ~FileAccessorBase ()=default
 

Private Attributes

UniqueLock m_unique_lock
 

Additional Inherited Members

- Public Attributes inherited from Euclid::FilePool::FileAccessor< TFD >
TFD m_fd
 The wrapped file descriptor.
 
- Protected Member Functions inherited from Euclid::FilePool::FileAccessor< TFD >
 FileAccessor (TFD &&fd, ReleaseDescriptorCallback release_callback)
 
- Protected Attributes inherited from Euclid::FilePool::FileAccessor< TFD >
ReleaseDescriptorCallback m_release_callback
 

Detailed Description

template<typename TFD>
class Euclid::FilePool::FileWriteAccessor< TFD >

Wraps a file descriptor together with an exclusive lock, so there can only be one accessor (no simultaneous reads!)

Template Parameters
TFDFile descriptor type

Definition at line 121 of file FileAccessor.h.

Member Typedef Documentation

◆ Base_

template<typename TFD >
typedef FileAccessor<TFD> Euclid::FilePool::FileWriteAccessor< TFD >::Base_

Definition at line 123 of file FileAccessor.h.

◆ ReleaseDescriptorCallback

template<typename TFD >
using Euclid::FilePool::FileWriteAccessor< TFD >::ReleaseDescriptorCallback = typename Base_::ReleaseDescriptorCallback

Definition at line 124 of file FileAccessor.h.

◆ SharedLock

template<typename TFD >
using Euclid::FilePool::FileWriteAccessor< TFD >::SharedLock = typename Base_::SharedLock

Definition at line 125 of file FileAccessor.h.

◆ UniqueLock

template<typename TFD >
using Euclid::FilePool::FileWriteAccessor< TFD >::UniqueLock = typename Base_::UniqueLock

Definition at line 126 of file FileAccessor.h.

Constructor & Destructor Documentation

◆ FileWriteAccessor()

template<typename TFD >
Euclid::FilePool::FileWriteAccessor< TFD >::FileWriteAccessor ( TFD &&  fd,
ReleaseDescriptorCallback  release_callback,
UniqueLock  lock 
)

Constructor

Parameters
fdFile descriptor
release_callbackCallback to be called at destruction
lockUnique lock to the underlying file

◆ ~FileWriteAccessor()

template<typename TFD >
virtual Euclid::FilePool::FileWriteAccessor< TFD >::~FileWriteAccessor ( )
virtual

Destructor.

Member Function Documentation

◆ isReadOnly()

template<typename TFD >
bool Euclid::FilePool::FileWriteAccessor< TFD >::isReadOnly ( ) const
finalvirtual
Returns
Always true

Implements Euclid::FilePool::FileAccessorBase.

Member Data Documentation

◆ m_unique_lock

template<typename TFD >
UniqueLock Euclid::FilePool::FileWriteAccessor< TFD >::m_unique_lock
private

Definition at line 146 of file FileAccessor.h.


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