Table of Contents

Class LinksUniquenessAndUsagesRepointingResolver<TLinkAddress>

Namespace
Foundation.Data.Doublets.Cli
Assembly
Foundation.Data.Doublets.Cli.dll

Keeps every doublet unique: an update that would duplicate an existing link merges into it instead, re-pointing every link that used the merged-away address at the surviving one.

public class LinksUniquenessAndUsagesRepointingResolver<TLinkAddress> : LinksUniquenessResolver<TLinkAddress>, ILinks<TLinkAddress>, ILinks<TLinkAddress, LinksConstants<TLinkAddress>> where TLinkAddress : IUnsignedNumber<TLinkAddress>

Type Parameters

TLinkAddress
Inheritance
LinksOperatorBase<TLinkAddress>
LinksDecoratorBase<TLinkAddress>
LinksUniquenessResolver<TLinkAddress>
LinksUniquenessAndUsagesRepointingResolver<TLinkAddress>
Implements
ILinks<TLinkAddress>
ILinks<TLinkAddress, LinksConstants<TLinkAddress>>
Inherited Members
LinksDecoratorBase<TLinkAddress>._constants
LinksDecoratorBase<TLinkAddress>._facade
LinksDecoratorBase<TLinkAddress>.Facade
LinksDecoratorBase<TLinkAddress>.Constants
LinksOperatorBase<TLinkAddress>._links
LinksOperatorBase<TLinkAddress>.Links
Extension Methods

Remarks

Replaces Platform.Data.Doublets.Decorators.LinksCascadeUniquenessAndUsagesResolver<TLinkAddress>, whose MergeUsages in Platform.Data.Doublets 0.18.1 writes (index: a, source: b, target: 0) where it means (source: a, target: b), so a usage loses its target instead of being re-pointed (https://github.com/linksplatform/Data.Doublets/issues/515).

Constructors

public LinksUniquenessAndUsagesRepointingResolver(ILinks<TLinkAddress> links)

Parameters

links ILinks<TLinkAddress>

Methods

RepointUsages(TLinkAddress, TLinkAddress, WriteHandler<TLinkAddress>?)

Replaces oldLinkAddress with newLinkAddress in every link that uses it, both halves of a link in one update.

public virtual TLinkAddress RepointUsages(TLinkAddress oldLinkAddress, TLinkAddress newLinkAddress, WriteHandler<TLinkAddress>? handler)

Parameters

oldLinkAddress TLinkAddress
newLinkAddress TLinkAddress
handler WriteHandler<TLinkAddress>

Returns

TLinkAddress

ResolveAddressChangeConflict(TLinkAddress, TLinkAddress, WriteHandler<TLinkAddress>?)

Resolves the address change conflict using the specified old link address.

protected override TLinkAddress ResolveAddressChangeConflict(TLinkAddress oldLinkAddress, TLinkAddress newLinkAddress, WriteHandler<TLinkAddress>? handler)

Parameters

oldLinkAddress TLinkAddress

The old link address.

newLinkAddress TLinkAddress

The new link address.

handler WriteHandler<TLinkAddress>

Returns

TLinkAddress

The new link address.