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

#include <FileAccessor.h>

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

Public Types

typedef FileAccessor< TFD > Base_
using ReleaseDescriptorCallback = typename Base_::ReleaseDescriptorCallback
using SharedLock = typename Base_::SharedLock
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

 FileReadAccessor (TFD &&fd, ReleaseDescriptorCallback release_callback, SharedLock lock)
 FileReadAccessor (const FileReadAccessor &)=delete
 It can not be copied.
 FileReadAccessor (FileReadAccessor &&)=default
 But it can be moved.
virtual ~FileReadAccessor ()
 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

SharedLock m_shared_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::FileReadAccessor< TFD >

Wraps a file descriptor together with a shared lock, so multiple read accessors pointing to the same physical file can exist at the same time.

Template Parameters
TFDFile descriptor type
Note
The file descriptor is still unique, since normally file descriptors can not be shared between threads (shared buffers, offsets, etc.) What is shared is the file itself.

Definition at line 81 of file FileAccessor.h.

Member Typedef Documentation

◆ Base_

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

Definition at line 83 of file FileAccessor.h.

◆ ReleaseDescriptorCallback

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

Definition at line 84 of file FileAccessor.h.

◆ SharedLock

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

Definition at line 85 of file FileAccessor.h.

Constructor & Destructor Documentation

◆ FileReadAccessor() [1/3]

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

Constructor

Parameters
fdFile descriptor
release_callbackCallback to be called at destruction
lockShared lock

Referenced by FileReadAccessor(), and FileReadAccessor().

◆ FileReadAccessor() [2/3]

template<typename TFD>
Euclid::FilePool::FileReadAccessor< TFD >::FileReadAccessor ( const FileReadAccessor< TFD > & )
delete

It can not be copied.

References FileReadAccessor().

Here is the call graph for this function:

◆ FileReadAccessor() [3/3]

template<typename TFD>
Euclid::FilePool::FileReadAccessor< TFD >::FileReadAccessor ( FileReadAccessor< TFD > && )
default

But it can be moved.

References FileReadAccessor().

Here is the call graph for this function:

◆ ~FileReadAccessor()

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

Destructor.

Member Function Documentation

◆ isReadOnly()

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

Implements Euclid::FilePool::FileAccessorBase.

Member Data Documentation

◆ m_shared_lock

template<typename TFD>
SharedLock Euclid::FilePool::FileReadAccessor< TFD >::m_shared_lock
private

Definition at line 111 of file FileAccessor.h.


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