Files
Umbraco-CMS/src/Umbraco.Core/Scoping/ILockingMechanism.cs
Nikolaj Brask-Nielsen 6d48091328 docs: XML warnings (#14663)
* chore: Fix XML warnings

* docs: Fix XML warnings

* docs: Fix XML in resource designer

* docs: Fix XML warnings

* Revert "docs: Fix XML in resource designer"

This reverts commit 8ea61c51ac161e1853ae080db7fe1b4d4cb4d2be.
2023-09-06 20:08:17 +02:00

63 lines
2.2 KiB
C#

namespace Umbraco.Cms.Core.Scoping;
public interface ILockingMechanism : IDisposable
{
/// <summary>
/// Read-locks some lock objects lazily.
/// </summary>
/// <param name="instanceId">Instance id of the scope who is requesting the lock</param>
/// <param name="timeout">Timeout for the lock</param>
/// <param name="lockIds">Array of lock object identifiers.</param>
void ReadLock(Guid instanceId, TimeSpan? timeout = null, params int[] lockIds);
void ReadLock(Guid instanceId, params int[] lockIds);
/// <summary>
/// Write-locks some lock objects lazily.
/// </summary>
/// <param name="instanceId">Instance id of the scope who is requesting the lock</param>
/// <param name="timeout">Timeout for the lock</param>
/// <param name="lockIds">Array of object identifiers.</param>
void WriteLock(Guid instanceId, TimeSpan? timeout = null, params int[] lockIds);
void WriteLock(Guid instanceId, params int[] lockIds);
/// <summary>
/// Eagerly acquires a read-lock
/// </summary>
/// <param name="instanceId"></param>
/// <param name="timeout">Timeout for the lock</param>
/// <param name="lockIds"></param>
void EagerReadLock(Guid instanceId, TimeSpan? timeout = null, params int[] lockIds);
void EagerReadLock(Guid instanceId, params int[] lockIds);
/// <summary>
/// Eagerly acquires a write-lock
/// </summary>
/// <param name="instanceId"></param>
/// <param name="timeout">Timeout for the lock</param>
/// <param name="lockIds"></param>
void EagerWriteLock(Guid instanceId, TimeSpan? timeout = null, params int[] lockIds);
void EagerWriteLock(Guid instanceId, params int[] lockIds);
/// <summary>
/// Clears all the locks held
/// </summary>
/// <param name="instanceId"></param>
void ClearLocks(Guid instanceId);
/// <summary>
/// Acquires all the non-eagerly requested locks.
/// </summary>
/// <param name="scopeInstanceId"></param>
void EnsureLocks(Guid scopeInstanceId);
void EnsureLocksCleared(Guid instanceId);
Dictionary<Guid, Dictionary<int, int>>? GetReadLocks();
Dictionary<Guid, Dictionary<int, int>>? GetWriteLocks();
}