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>._constantsLinksDecoratorBase<TLinkAddress>._facadeLinksDecoratorBase<TLinkAddress>.FacadeLinksDecoratorBase<TLinkAddress>.ConstantsLinksOperatorBase<TLinkAddress>._linksLinksOperatorBase<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
LinksUniquenessAndUsagesRepointingResolver(ILinks<TLinkAddress>)
public LinksUniquenessAndUsagesRepointingResolver(ILinks<TLinkAddress> links)
Parameters
linksILinks<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
oldLinkAddressTLinkAddressnewLinkAddressTLinkAddresshandlerWriteHandler<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
oldLinkAddressTLinkAddressThe old link address.
newLinkAddressTLinkAddressThe new link address.
handlerWriteHandler<TLinkAddress>
Returns
- TLinkAddress
The new link address.