AFIO  v2.00 late alpha
Todo List
Namespace afio_v2_xxx
TODO FIXME Replace in-memory log with memory map file backed log.
Class 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 afio_v2_xxx::algorithm::shared_fs_mutex::atomic_append::_lock (entities_guard &out, deadline d, bool spin_not_sleep) noexcept final
Read from header.last_known_good immediately if possible in order to avoid a duplicate read later
Member afio_v2_xxx::algorithm::shared_fs_mutex::atomic_append::fs_mutex_append (const path_handle &base, path_view 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 afio_v2_xxx::algorithm::shared_fs_mutex::memory_map< Hasher, HashIndexSize, SpinlockType >
memory_map::_hash_entities needs to hash x16, x8 and x4 at a time to encourage auto vectorisation
Member afio_v2_xxx::io_handle::io_handle ()=default
Why is io_result<buffers_type> not a standard layout type?
Class afio_v2_xxx::path_view
Lots of member functions remain to be implemented.