6#include "SqlAdvisoryLock.hpp"
7#include "SqlConnection.hpp"
52 std::string_view lockName,
53 std::chrono::milliseconds timeout = std::chrono::seconds(30));
60 [[nodiscard]] LIGHTWEIGHT_API
static std::expected<SqlScopedLock, SqlLockError>
TryConstruct(
61 SqlConnection& connection, std::string_view lockName, std::chrono::milliseconds timeout = std::chrono::seconds(30));
83 [[nodiscard]] std::string_view
Name() const noexcept
93 [[nodiscard]] LIGHTWEIGHT_API std::expected<void, SqlLockError>
Release();
99 struct AlreadyLockedTag
103 std::string_view lockName,
105 AlreadyLockedTag )
noexcept;
108 std::string _lockName;
110 bool _locked {
false };
Represents a connection to a SQL database.
LIGHTWEIGHT_API SqlScopedLock(SqlScopedLock &&other) noexcept
Move constructor.
bool IsLocked() const noexcept
Check if the lock is currently held by this instance.
static LIGHTWEIGHT_API std::expected< SqlScopedLock, SqlLockError > TryConstruct(SqlConnection &connection, std::string_view lockName, std::chrono::milliseconds timeout=std::chrono::seconds(30))
LIGHTWEIGHT_API SqlScopedLock(SqlConnection &connection, std::string_view lockName, std::chrono::milliseconds timeout=std::chrono::seconds(30))
LIGHTWEIGHT_API SqlScopedLock & operator=(SqlScopedLock &&other) noexcept
Move assignment operator.
LIGHTWEIGHT_API std::expected< void, SqlLockError > Release()
std::string_view Name() const noexcept
Returns the lock name passed at construction.
LIGHTWEIGHT_API ~SqlScopedLock()