Exemplo n.º 1
0
        public SubDomainZone GetOrAddParentSideZone(Func <SubDomainZone> valueFactory)
        {
            SubDomainZone newParentSideZone = null;

            while (true)
            {
                SubDomainZone parentSideZone = _parentSideZone;
                if (parentSideZone is not null)
                {
                    return(parentSideZone);
                }

                if (newParentSideZone is null)
                {
                    newParentSideZone = valueFactory();
                }

                if (TryAdd(newParentSideZone))
                {
                    return(newParentSideZone);
                }
            }
        }
Exemplo n.º 2
0
 public bool TryAdd(SubDomainZone parentSideZone)
 {
     return(Interlocked.CompareExchange(ref _parentSideZone, parentSideZone, null) is null);
 }
Exemplo n.º 3
0
 public bool TryRemove(out SubDomainZone parentSideZone)
 {
     parentSideZone = _parentSideZone;
     return(ReferenceEquals(Interlocked.CompareExchange(ref _parentSideZone, null, parentSideZone), parentSideZone));
 }
Exemplo n.º 4
0
 public AuthZoneNode(SubDomainZone parentSideZone, ApexZone zone)
 {
     _parentSideZone = parentSideZone;
     _apexZone       = zone;
 }