Alexandria 2.32.0
SDC-CH common library for the Euclid project
Loading...
Searching...
No Matches
Euclid::FilePool::FileWriteAccessor< TFD > Class Template Reference

#include <FileAccessor.h>

Inheritance diagram for Euclid::FilePool::FileWriteAccessor< TFD >:
Collaboration diagram for Euclid::FilePool::FileWriteAccessor< TFD >:

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: