Boost.AFIO  v2.00 early alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Todo List
Namespace boost
TODO FIXME Replace in-memory log with memory map file backed log.
Class boost::afio::v2_xxx::algorithm::shared_fs_mutex::atomic_append

Implement hole punching once I port that code from AFIO v1.

Decide on some resolution mechanism for sudden process exit.

There is a 1 out of 2^64-2 chance of unique id collision. It would be nice if we actually formally checked that our chosen unique id is actually unique.

Member boost::afio::v2_xxx::algorithm::shared_fs_mutex::atomic_append::_lock (entities_guard &out, deadline d, bool spin_not_sleep) noexceptoverridefinal
Read from header.last_known_good immediately if possible in order to avoid a duplicate read later
Member boost::afio::v2_xxx::algorithm::shared_fs_mutex::atomic_append::fs_mutex_append (file_handle::path_type lockfile, bool nfs_compatibility=false, bool skip_hashing=false) noexcept
fs_mutex_append needs to check if file still exists after lock is granted, awaiting path fetching.
Class boost::afio::v2_xxx::algorithm::shared_fs_mutex::memory_map< Hasher, HashIndexSize, SpinlockType >

It should be possible to auto early out from a memory_map transition by scanning the memory map for any locked items, and if none then to proceed.

fs_mutex_map needs to check if this inode is that at the path after lock is granted, awaiting stat_t port.

memory_map::_hash_entities needs to hash x16, x8 and x4 at a time to encourage auto vectorisation

memory_map::unlock() degrade is racy when single instance being used by multiple threads

Class boost::afio::v2_xxx::file_handle
file_handle needs to be split into a pathed_handle for the file and directory common parts
Member boost::afio::v2_xxx::fixme_temporary_files_directory () noexcept
This function needs to become a static member function of afio::path once that is written, hence the 'fixme' in its title.