~ruther/NosSmooth

69955f8abf63a8ad700c70ba03f59d0c33840304 — Rutherther 3 years ago 3244445
fix(game): release game semaphore on exception
1 files changed, 29 insertions(+), 19 deletions(-)

M Core/NosSmooth.Game/Game.cs
M Core/NosSmooth.Game/Game.cs => Core/NosSmooth.Game/Game.cs +29 -19
@@ 155,14 155,19 @@ public class Game : IStatefulEntity
    {
        await Semaphores.AcquireSemaphore(type, ct);

        var current = create();
        set(current);
        if (releaseSemaphore)
        try
        {
            Semaphores.ReleaseSemaphore(type);
            var current = create();
            set(current);
            return current;
        }
        finally
        {
            if (releaseSemaphore)
            {
                Semaphores.ReleaseSemaphore(type);
            }
        }

        return current;
    }

    private async Task<T> CreateOrUpdateAsync<T>


@@ 178,22 183,27 @@ public class Game : IStatefulEntity
    {
        await Semaphores.AcquireSemaphore(type, ct);

        var current = get();
        if (current is null)
        try
        {
            current = create();
            var current = get();
            if (current is null)
            {
                current = create();
            }
            else
            {
                current = update(current);
            }

            set(current);
            return current;
        }
        else
        finally
        {
            current = update(current);
            if (releaseSemaphore)
            {
                Semaphores.ReleaseSemaphore(type);
            }
        }

        set(current);
        if (releaseSemaphore)
        {
            Semaphores.ReleaseSemaphore(type);
        }

        return current;
    }
}
\ No newline at end of file

Do not follow this link