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::FileReadAccessor< TFD > Class Template Reference

#include <FileAccessor.h>

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

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

◆ FileReadAccessor() [2/3]

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

It can not be copied.

◆ FileReadAccessor() [3/3]

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

But it can be moved.

◆ ~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: