< Summary

Information
Class: Trailblazer.Pathing.NavigationFlowFieldPayloadLease
Assembly: Trailblazer
File(s): /home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/Flow/NavigationFlowFieldPayloadLease.cs
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 52
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
TryGetPayload(...)100%22100%
IsOwnedBy(...)100%11100%
Dispose()100%22100%
ReturnStale(...)100%11100%

File(s)

/home/runner/work/Trailblazer/Trailblazer/src/Trailblazer/Pathing/Search/Flow/NavigationFlowFieldPayloadLease.cs

#LineLine coverage
 1//=======================================================================
 2// NavigationFlowFieldPayloadLease.cs
 3//=======================================================================
 4// MIT License, Copyright (c) 2024-present David Oravsky (mrdav30)
 5// See LICENSE file in the project root for full license information.
 6//=======================================================================
 7
 8using System;
 9
 10namespace Trailblazer.Pathing;
 11
 12/// <summary>Generation-validates one active reference to an immutable flow payload.</summary>
 13internal readonly struct NavigationFlowFieldPayloadLease : IDisposable
 14{
 15    private readonly NavigationFlowFieldPayloadCache? _owner;
 16    private readonly int _slot;
 17    private readonly ulong _generation;
 18
 19    internal NavigationFlowFieldPayloadLease(
 20        NavigationFlowFieldPayloadCache owner,
 21        int slot,
 22        ulong generation)
 23    {
 157524        _owner = owner;
 157525        _slot = slot;
 157526        _generation = generation;
 157527    }
 28
 29    internal NavigationFlowFieldStatus TryGetPayload(
 30530        out NavigationFlowFieldPayload payload) => _owner == null
 30531        ? ReturnStale(out payload)
 30532        : _owner.TryGetPayload(_slot, _generation, out payload);
 33
 34    internal bool IsOwnedBy(
 35        NavigationFlowFieldPayloadCache owner,
 36        out int slot,
 37        out ulong generation)
 38    {
 118439        slot = _slot;
 118440        generation = _generation;
 118441        return ReferenceEquals(_owner, owner);
 42    }
 43
 43544    public void Dispose() => _owner?.Return(_slot, _generation);
 45
 46    private static NavigationFlowFieldStatus ReturnStale(
 47        out NavigationFlowFieldPayload payload)
 48    {
 349        payload = null!;
 350        return NavigationFlowFieldStatus.Stale;
 51    }
 52}